泛型和继承

时间:2014-04-14 02:03:13

标签: 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();
}

3 个答案:

答案 0 :(得分:3)

明显的区别在于一个是通用的而另一个不是。

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

答案 1 :(得分:1)

在这种情况下,没有区别,因为type参数只是在一个地方用作参数的类型。只有在更复杂的情况下才需要类型参数。

答案 2 :(得分:0)

存在差异,Generics用于提供类型安全性。泛型将让你看到编译时错误,例如,可以在早期检测到;您可以使用编译器的错误消息来确定问题所在并立即修复它。

您在此处使用有界类型参数

http://docs.oracle.com/javase/tutorial/java/generics/bounded.html