为什么我必须转换返回的值?

时间:2014-05-21 12:51:39

标签: java generics casting

对我而言,我调用的函数已经返回了我必须将其转换为的类型。为什么我必须这样做?

T[]leftPart=(T[]) sort(copyOfRange(a,0,middle));

我创建的copyOfRange方法应该返回与参数a。

相同的类型

以下是代码:

    static public   <T extends Comparable<T>> Object[] sort(T[] a){
    int middle=a.length/2;

    T[]leftPart=(T[]) sort(copyOfRange(a,0,middle));
    }

static public<T> T[] copyOfRange(T[] original,int from,int to){
    int size=to-from;
    T[] retObject=(T[])new Object[size];
    for(int i=0;i<size;i++) retObject[i]=original[from+i];
    return retObject;
}

1 个答案:

答案 0 :(得分:3)

copyOfRange返回T[],但您将其放入sort()sort()返回了Object[]