Java:是否可以使用只能采用可比较类型的泛型类?

时间:2010-05-05 23:59:32

标签: java generics

我想按照以下方式做点什么:

public class MyClass<T implements Comparable> {
    ....
}

但我不能,因为,显然,泛型只接受子类的限制,而不是接口。

重要的是我能够比较课堂内的类型,所以我应该怎么做呢?理想情况下,我能够保持Generics的类型安全性,而不必将T转换为Object,或者只是不编写大量代码。换句话说,最简单的越好。

3 个答案:

答案 0 :(得分:7)

implements错了。它只接受extendssuper。您可以在此使用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>> {
....
}