关于泛型里的疑问:- import java.util.*;
- class GenericDemo6
- {
- public static void main(String[] args)
- {
- ArrayList<Person> p=new ArrayList<Person>();
- p.add(new Person("abc"));
- p.add(new Person("abcd"));
- p.add(new Person("abcde"));
- ArrayList<Student> s=new ArrayList<Student>();
- s.add(new Student("s----abc"));
- s.add(new Student("s----abcd"));
- s.add(new Student("s-----abcde"));
- print(p);
- }
- //public static void print(ArrayList<? extends Person> al)
- public static void print(ArrayList<? super Student> al) //视频里说的是限定下限,可以接收他或他的父类
- {
- //Iterator<? extends Person> it=al.iterator();
- Iterator<? super Student> it=al.iterator(); // 这里也是
- while(it.hasNext())
- {
- System.out.println(it.next().getName());
- }
- }
- }
- class Person
- {
- private String name;
- public Person(String name)
- {
- this.name=name;
- }
- public String getName()
- {
- return name;
- }
- }
- class Student extends Person
- {
- private String name;
- public Student(String name)
- {
- super(name);
- }
- }
复制代码 这里<? super Stduent>既可以接收Student ,和Person这两个父类,那Object也是他们的父类,肯定是不能接收的,因为没有getName()方法,那就是只能接收Person 和Student了,但这两个我都试了一下都是编译败:
GenericDemo6.java:38: 错误: 找不到符号
System.out.println(it.next().getName());
^
符号: 方法 getName()
位置: 类 Object
1 个错误
|