java编译通不过

来源:百度知道 编辑:UC知道 时间:2024/05/27 14:23:21
class HeapPQueue<T>{
private MinInfo<T>[] heapElt;
private int numElts;
public HeapPQueue(){
heapElt=new MinInfo<T>[50];
numElts=0;
}
}
注:MinInfo是已经通过了的泛型类
不知道上面创建对象数组怎么老通不过,报错就写个“创建泛型数组”
不知道什么意思啊,求高人指点

Java是不允许创建泛型数组的,因为JVM在创建数组对象的时候不知道拿什么类型来创建,所以你只能new MinInfo[50]了。

顶楼上的。
Java的泛型如同鸡肋,是基于编译器的。而不是基于虚拟机。
这点DotNet的C#做的就比Java强,虽然也不是完全实现,但比较完美了。

关注

是不能这样写的,只能heapElt=new MinInfo[50]; 这是叫做“王八的屁股”——规定,应该是这样的:
heapElt=new MinInfo[50];
heapElt[i] = new MinInfo<T>();

@SuppressWarnings("unchecked")
public HeapPQueue(){
heapElt=(MinInfo<T>[])new MinInfo[50];
numElts=0;
}

编译不过并不是规定死板,而是Sun自己还都没弄清楚泛形具体应该弄成什么样子,这是Java目前的一个缺陷。