是否可以创建一个实现可比较的新通用数组?
我有类似的东西:
public class MyClass<T extends Comparable<T>> {
...
public T[] myAlgorithm( T[] list1, T[] list2 ) {
T[] newList = (T[]) new Object( ... );
if ( list1[0].compareTo( list2[0] ) < 0 ) {
...
}
return newList;
}
}
但它(显然)抛出错误:
[Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable
我创建了一个Object类的新实例(所有类的父类)并将其转换为参数化类型以获取参数化数组。我从其他消息来源读到,这是做到这一点的方法。但我希望它在我的算法在代码中的显示方式中使用可比较的方式,而且我不想使用集合。
有什么方法可以做这样的事吗?
答案 0 :(得分:1)
一种方式如下(未经测试的代码):
public class MyClass<T extends Comparable<T>> {
public T[] myAlgorithm( T[] list1, T[] list2 ) {
@SuppressWarnings("unchecked")
T[] newList = (T[])Array.newInstance(list1[0].getClass(), list1.length);
for (T t1 : list1) {
for (T t2 : list2) {
if(t1.compareTo(t2)==0) {
//TODO
}
}
}
return newList;
}
}