java - 泛型和继承

标签 java generics inheritance

鉴于这种情况:

class School 
{
    public void print(){}
}

class Grade extends School{}

class Student extends School{}

这有什么区别

public <E extends School> void someMethod(E someObj) 
{
    //now we can pass any object that extends school 
    //and we have access to any methods that are in school
    someObj.print();

}

还有这个?

public void someMethod(School someObj)
{
    someObj.print();
}

最佳答案

明显的区别是一个是通用的,另一个不是。

另一个知道的是泛型可以捕获参数的实际类型。当然,在这种情况下它没有任何区别。但是想象一下,如果您希望返回类型是参数的确切类型,那么它就会出现。

关于java - 泛型和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23050833/

相关文章:

C# 泛型通配符或如何保存对未知泛型继承的引用

c# - 继承数据库的最佳方式

c++ - 在C++中使用模板成员函数继承模板类

c++ - 静态成员可以单独继承吗?

java - 如果使用 env 初始化失败,如何加载一些默认的 log4j 配置。具体配置?

Java 泛型 : Cannot cast List<Class<R>> to List<Class>

java - ArrayList<Integer> 是否允许添加字符串?

java - 非法参数异常 : Comparison method violates general contract

java - 将自定义元数据添加到二进制文件

java - 向 hibernate 映射文件添加属性