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>