还有一个新手,试图理解Java Generics.我发现,我观察了所有主题,但我仍然有很多问题.能否请你解释一下以下事项:
<? extends SomeClass>意思?是"任何类型",并且extends SomeClass意味着任何类型都只能是它的子类SomeClass.好的,我写了两个小学课:abstract class Person {
private String name;
public Person(String name) {
this.name = name;
}
}
class Student extends Person {
public Student(String name) {
super(name);
}
}
Run Code Online (Sandbox Code Playgroud)
类Student将?在我们的示例中.? extends Person确切地说.然后我试图将新学生添加到ArrayList,正如我从上面所写的那样,它应用所有类,它们是Person的子类:
Student clarissa = new Student("Clarissa Starling");
List<? extends Person> list = new ArrayList<>();
list.add(clarissa); //Does not compile
Run Code Online (Sandbox Code Playgroud)
Eclipse说:
"类型List中的方法add(捕获#3-of?extends Person)不适用于参数(Student)"
Student当我们声明List <? extends Person>,参数化并Student完全扩展类时,类怎么可能不适用Person? …