请,我想知道写作之间的区别
public class Something<T extends Comparable<T>> {// }
和
public class Something<T extends Comparable> {// }
以及这将如何影响代码
不同之处在于,在第一种情况下,类型参数T
必须与其自身可比,而在第二种情况下,类型参数T
可与任何东西相比较。通常,当使一个类C
具有可比性时,Comparable<C>
无论如何它都声明要实现。不过,这是一个示例,其中第一个不起作用而第二个不起作用:
class C1<T extends Comparable<T>> { // first case
}
class C2<T extends Comparable> { // second case
}
class A { // some super class
}
class B extends A implements Comparable<A> { // comparable to super class
@Override
public int compareTo(A o) {
return 0;
}
}
现在:
new C1<B>(); // error
new C2<B>(); // works
通常,您永远不应该使用第二种方法。尽可能避免使用原始类型。另请注意,第二种方法的更好选择是
public class Something<T extends Comparable<? super T>> { /*...*/ }
与之配合使用C1
将允许new C1<B>()
上面的行也进行编译。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句