我有一个名为 getMember
的方法,它可以返回任何 Comparable 对象、String、Integer 等。
我不知道使用什么作为类型参数,因此 compareTo
可以工作。下面的代码不起作用
Comparable<? extends Comparable<?>> m1 = column.getMember(o1);
Comparable<? extends Comparable<?>> m2 = column.getMember(o2);
int compareTo = m1.compareTo(m2);
如果我不清楚,m1 和 m2 将始终是相同的类型。没有类型参数的比较工作正常,我只是想知道要放入什么 <>
最佳答案
我认为你需要的是 generic method 。无论这段代码采用什么方法,都必须被泛化。这是我的最佳选择,因为您没有 getMember
方法的源代码。
public <T extends Comparable<? super T>> void doSomethingTheOPWants() {
...
T m1 = column.getMember(o1);
T m2 = column.getMember(o2);
int compareTo = m1.compareTo(m2);
}
以我目前对代码的了解,我认为我无法创建相关/有值(value)的测试,所以我将其留给OP。
关于java - CompareTo 的通用比较类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24311842/