我有一个
public class Person {
public Person() {
super();
}
}
public class Employee extends Person {
public Employee() {
super();
}
}
来自不同的java文件:
public <T extends Person> T gPerson(){
Employee p = new Employee();
return p;
}
public Person getPerson(){
Employee p = new Employee();
return p;
}
第一种方法gPerson()有编译时错误:无法从Employee转换为T.为什么会出现此错误。
答案 0 :(得分:3)
public <T extends Person> T gPerson()
表示gPerson
返回一些必须是Person或Person的子类的未知类型。
这意味着:
NonEmployee ne = gPerson();
是合法的(假设NonEmployee
是某个扩展Person
的类。
因此,gPerson
无法返回Employee
,因为Employee
无法投放到NonEmployee
。