为什么要将数组声明为一种接口?

这是来自Mark Weiss教授在他的书中的数据结构和算法分析

public class BinaryHeap<AnyType extends Comparable<? super AnyType>>{
    private void enlargeArray( int newSize ){
        AnyType [] old = array;
        array = (AnyType []) new Comparable[ newSize ];
        for( int i = 0; i < old.length; i++ )
        array[ i ] = old[ i ];        
    }
}

我想知道为什么我们要声明一个接口类型为Comparable的数组,因为我们必须将Comparable[]转换为AnyType[] ? 那里有任何设计理念?


设计“哲学”是你不能实例化一个类型参数的数组,所以你必须用合法的类型实例化数组。 该方法已知的唯一可用法律类型是ObjectComparable数组,后者捕获有关该类型的更多知识。

您可以向下转换为类型参数的数组,并且返回类型必须是该类型,因此需要向下转换。

这是必然的“哲学”。

链接地址: http://www.djcxy.com/p/96031.html

上一篇: Why declare an array as a type of Interface?

下一篇: Unable to bind to server: Strong(er) authentication required