我想按照以下方式做点什么:
public class MyClass<T implements Comparable> {
....
}
但我不能,因为,显然,泛型只接受子类的限制,而不是接口。
重要的是我能够比较课堂内的类型,所以我应该怎么做呢?理想情况下,我能够保持Generics的类型安全性,而不必将T转换为Object,或者只是不编写大量代码。换句话说,最简单的越好。
答案 0 :(得分:7)
implements
错了。它只接受extends
或super
。您可以在此使用extends
:
public class MyClass<T extends Comparable<T>> {
// ...
}
要了解有关泛型的更多信息,您可能会发现this tutorial (PDF)很有用。
答案 1 :(得分:3)
最好的方法是:
public class MyClass<T extends Comparable<? super T>> {
....
}
如果您只是<T extends Comparable<T>>
,那么它对于类似的类的子类将不起作用。
答案 2 :(得分:1)
对于必须使用扩展的接口。所以在你的情况下,它将是:
public class MyClass<T extends Comparable<T>> {
....
}