我正在创建一个泛型类,它有一个方法,该方法应该对数组集合进行排序,该数组集合可能是一本书,也可能是一张 CD。我在两个类型类中实现了 Comparable,并尝试对 GenericCollection 类中的数组进行排序。
我的方法现在看起来像这样:
public void sort(){
for (int i = 0; i < collection.length; i++) {
for (int j = 0; j < collection.length; j++) {
if (((T)collection[i]).compareTo((T)collection[j]) > 0){
T t = (T)collection[i];
collection[i] = collection[j];
collection[j] = t;
}
}
}
}
这给了我一个错误,即对象不可比较。如果我尝试转换为 T 类型,则会收到以下错误:T 未为 CompareTo 定义。如果我尝试这样的事情:
<T extends Comparable>
我可以编译,但我收到运行时错误,即使我在使用此类的两种类型中定义了 Comparable。
如何让泛型类型能够在自己的类中运行compareTo 方法。
感谢您的帮助。
最佳答案
您应该使用内置排序,但是要回答您的问题,您需要有。
<T extends Comparable<T>>
或者更晦涩的
<T extends Comparable<? super T>>
参见
public static <T extends Comparable<? super T>> void sort(List<T> list)
这个故事的寓意:如果您不打算使用一个完全符合您想要的功能的内置函数,您至少应该首先了解它,因为它可能会给您一些提示。 ;)
关于java - 在泛型类中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7235039/