创建实现可比较的新通用数组

时间:2014-05-14 04:56:49

标签: java generics comparable

是否可以创建一个实现可比较的新通用数组?

我有类似的东西:

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类的新实例(所有类的父类)并将其转换为参数化类型以获取参数化数组。我从其他消息来源读到,这是做到这一点的方法。但我希望它在我的算法在代码中的显示方式中使用可比较的方式,而且我不想使用集合。

有什么方法可以做这样的事吗?

1 个答案:

答案 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;
    }
}