使用Comparable Interface的警告

时间:2014-03-25 20:15:47

标签: java

我有一个带有以下代码的类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>[]

我知道这只是一个警告,但我很想知道原因

谢谢

1 个答案:

答案 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);