我有一个
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。为什么会出现这个错误。
最佳答案
public <T extends Person> T gPerson()
意味着 gPerson
返回某个未知类型,该类型必须是 Person 或 Person 的子类。
这意味着:
NonEmployee ne = gPerson();
是合法的(假设 NonEmployee
是扩展 Person
的某个类)。
因此 gPerson
无法返回 Employee
,因为 Employee
无法转换为 NonEmployee
)。
关于java - 继承期间Java中的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28009068/