Java:如何调用扩展了Comparable的类的构造函数,使用Anytype[]作为参数?

Java:如何调用扩展了Comparable的类的构造函数,使用Anytype[]作为参数?,java,object,constructor,Java,Object,Constructor,就我的一生而言,我无法理解这种语法是如何工作的 public class BinaryHeap<AnyType extends Comparable<? super AnyType>> { ... public BinaryHeap( AnyType [ ] items ) { currentSize = items.length; array = (AnyType[]) new Comparable[ ( currentSize +

就我的一生而言,我无法理解这种语法是如何工作的

public class BinaryHeap<AnyType extends Comparable<? super AnyType>>
{

...

 public BinaryHeap( AnyType [ ] items )
{
        currentSize = items.length;
        array = (AnyType[]) new Comparable[ ( currentSize + 2 ) * 11 / 10 ];

        int i = 1;
        for( AnyType item : items )
            array[ i++ ] = item;
        buildHeap( );
}
} // end class
公共类二进制堆首先,不能将“heapElements[]作为函数参数传递,这是不正确的语法

其次,不能实例化基元类型int的BinaryHeap。Java语言不允许将基元类型替换为泛型类型参数。比如说,

ArrayList<int> 
ArrayList
这是违法建筑

其中一个选项是使用整数而不是整数。但这会导致与自动装箱相关的一些开销


另一种选择是使用基本集合库,如GNU-Trove

泛型、基本类型和数组不能很好地发挥作用。使用
集合
类型。您正在将类型参数设置为
整数
,但试图将数组对象(
int[]
)传递给构造函数,而不是整数对象。您必须将类型参数从
Integer
更改为
int[]
,才能接受构造函数argumentint和Integer是不同的类型。是否需要任何类型来实现Compariable?如果是这样的话,你就不走运了,因为数组和列表没有实现它。为什么在这种情况下需要Compariable?但是您可以选择一个基元数组作为类型参数,这似乎是他试图传递的(不仅仅是基元值,而是一个充满基元的数组对象,这在泛型中是允许的)。如果你愿意,看看我的评论,如果你愿意的话,偷取答案
The constructor BinaryHeap(Class<heapElements[]>) is undefined
ArrayList<int>