java - 继承期间Java中的泛型

标签 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。为什么会出现这个错误。

最佳答案

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/

相关文章:

java - 如何将字符串转换为泛型类型<E>?

c# - 使用通用存储库更新多对多关系

java - 如何将 Openshift configmaps 文件添加到 tomcat 内置的 Spring Boot Web

Java内联类调用父类中的方法

java - 尝试从图片中读取元数据时获取 FileNotFoundException(权限被拒绝)

java - 比较器 reversed() 导致编译器错误

java - java中的泛型二叉搜索树

java - 将背景图像添加到面板

java - 在Java中,如果父类有psvm,为什么我们不能使用名称为String的内部类

c# - 具有 lambda 表达式的泛型