java - CompareTo 的通用比较类型

标签 java comparable compareto

我有一个名为 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/

相关文章:

java - 在 android 上使用 bufferedwriter 每秒写一次

java - 将不同类型的对象与可比较的对象进行比较

java - 实现 Comparable 以使用字符串按字母顺序排序

java - 为什么 Java 'Comparable' 比仅使用 CompareTo 方法更好?

Java compareTo 方法错误 :java. lang.Integer 无法转换为 java.lang.Boolean

java - Java 和 Mojave 的强化运行时

java - 读取文本并将文件文本输入到JTextArea

java - java的compareTo()方法表现得很奇怪

java - Android上如何实现父子Recyclerview

java - setAutoCreateRowSorter 对象