我正在制作一个使用 T 作为主要参数的泛型类。我需要对一些 T 进行排序,但要做到这一点,我需要实现一个通用的compareTo。我一直在寻找如何做到这一点。我知道如何实现类似的东西
public class Foo implements Comparable {
private int age;
public Foo (int age) {
this.age = age;
}
public int compareTo(Foo a) {
if (age < a.age) {
return -1;
}
if (age == a.age) {
return 0;
}
if (age > a.age) {
return 1;
} else {
return 0;
}
}
}
但是当我尝试比较两个通用对象时我迷失了(例如,如果 T 是整数,它比较整数,如果 T 是字符串,它比较字符串)。基本上是这样的:
T.compareTo(T)
我知道这可能是一个我忽略的简单解决方案,但我不明白,因为没有可以比较的变量。
最佳答案
使用具有泛型类型参数的 Comparable
泛型形式,而不是没有任何类型参数的 Comparable
原始形式。将 Foo
对象与其他 Foo
对象进行比较是有意义的。我不会使用泛型类型参数;我只需提供 Foo
作为 Comparable
上的类型参数。
尝试
public class Foo implements Comparable<Foo> {
那么您的 compareTo
方法应该可以工作。
关于java - 比较通用 T 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22186654/