- class GenericDemo6
- {
- public static void main(String[] args)
- {
- ArrayList<Person> a=new ArrayList<Person>();
- a.add(new Person("lisi01"));
- a.add(new Person("lisi02"));
- a.add(new Person("lisi03"));
- a.add(new Person("lisi04"));
- ArrayList<Student> s=new ArrayList<Student>();
- s.add(new Student("lisi001"));
- s.add(new Student("lisi002"));
- s.add(new Student("lisi003"));
- s.add(new Student("lisi004"));
- print(s);
- }
- public static void print(ArrayList<? super Student> a)
- {
- Iterator<? super Student> it=a.iterator();
- while (it.hasNext())
- {
- System.out.println(it.next().getName());
- }
- }
- }
- class Person
- {
- private String name;
- Person(String name)
- {
- this.name=name;
- }
- public String getName()
- {
- return name;
- }
- }
- class Student extends Person
- {
- Student(String name)
- {
- super(name);
- }
- }
复制代码 这就是老师视频中的例子,写成<? extends person>就没问题 写成<? super Student>就报错 ? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限 这个也可以接受E类型啊
报的错误是:
GenericDemo6.java:55: 错误: 找不到符号
System.out.println(it.next().getName());
^
符号: 方法 getName()
位置: 类 Object
|