我想创建一个扩展 Comparator 的类。此比较器将比较两个数组,其中数组可以包含任何可比较的内容。可以让我做这样的事情的东西:
comparator.compare(new Integer[] {1,2}, new Integer[] {3,4,5});
参数的类型不一定是 Integer[]。它们可以是任何东西的数组。
有什么方法可以使用泛型创建这样的类吗?或者我的比较器应该接收对象。如果它必须接收对象,我如何检查它是否是一个数组并从其中获取元素?
我想创建一个扩展 Comparator 的类。此比较器将比较两个数组,其中数组可以包含任何可比较的内容。可以让我做这样的事情的东西:
comparator.compare(new Integer[] {1,2}, new Integer[] {3,4,5});
参数的类型不一定是 Integer[]。它们可以是任何东西的数组。
有什么方法可以使用泛型创建这样的类吗?或者我的比较器应该接收对象。如果它必须接收对象,我如何检查它是否是一个数组并从其中获取元素?
使用数组本身作为类型参数Comparator
怎么样?
public class ArrayComparator<T extends Comparable<? super T>> implements
Comparator<T[]> {
@Override
public int compare(T[] o1, T[] o2) {
// TODO
}
}
您的 Comparator 参数类型应为 T[]。
这是一个示例用法:
public class Test<T> implements java.util.Comparator<T[]> {
@Override
public int compare(T[] paramT1, T[] paramT2) {
return 0;
}
public static void main(String[] args) {
System.out.println(new Test<Integer>().compare(new Integer[] {1,2}, new Integer[] {3,4,5}));
}
}
是的,你可以,例如这样:
implements Comparator<T[]> {
@Override
public int compare(T[] array1, T[] array2) {
//compare arrays here
return ...;
}
或类似这样的比较方法,它将推断调用值的类型:
public static <T> int compare(T[] array1, T[] array2) {