繁体   English   中英

泛型和继承

[英]Generics and 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();
}

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

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

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

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

这里你使用有界类型参数的方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM