继承期间Java中的泛型

时间:2015-01-18 11:16:38

标签: java generics

我有一个

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.为什么会出现此错误。

1 个答案:

答案 0 :(得分:3)

public <T extends Person> T gPerson()

表示gPerson返回一些必须是Person或Person的子类的未知类型。

这意味着:

NonEmployee ne = gPerson();

是合法的(假设NonEmployee是某个扩展Person的类。 因此,gPerson无法返回Employee,因为Employee无法投放到NonEmployee