我有一个带有以下代码的类ArraySort
private Comparable<Object> a[];
private int nElems;
public ArraySort(int length)
{
this.a = new Comparable[length];
this.nElems =0;
}
为什么Java会在此声明中发出警告
this.a = new Comparable[length];
它发出以下警告
Type safety: The expression of type Comparable[] needs unchecked conversion to conform to Comparable<Object>[]
我知道这只是一个警告,但我很想知道原因
谢谢
答案 0 :(得分:5)
这是因为Java不支持通用对象的数组。具体来说,这是你想要写的,但下面的代码将无法编译:
this.a = new Comparable<Object>[length]; // <<== Does not compile!!!
对此的一个简单修复是切换到List<Comparable<Object>>
:没有效率损失,编译器可以为您进行类型检查:
private List<Comparable<Object>> a;
...
this.a = new ArrayList<Comparable<Object>>(length);