无法将Object []转换为Integer []

时间:2018-10-29 06:01:47

标签: java compiler-errors

使用toArray方法将TreeSet对象转换为数组,但是出现错误:
    Object[] cannot be converted to Integer[]

代码如下:

public static void main (String[] args) {
    TreeSet elems = new TreeSet<Integer>();
    int[] elemsToAdd = {1,2,3,4};

    for(int i = 0; i < elemsToAdd.length; i++){
        elems.add(elemsToAdd[i]);
    }
    Integer[] elemsArray = elems.toArray(new Integer[elems.size()]);
 }

我已经在其他线程中搜索了答案,但是所有这些线程都建议使用带有Integer数组的toArray方法作为参数,但是我的仍然会抛出错误。

2 个答案:

答案 0 :(得分:2)

那是由于您使用了原始类型。将elems定义为原始TreeSet时,elems.toArray返回Object[],而不是Integer[]

更改

TreeSet elems = new TreeSet<Integer>();

TreeSet<Integer> elems = new TreeSet<Integer>();

答案 1 :(得分:0)

Erans Answer解决了错误,但我也想贡献自己的力量

TreeSet<T>可以接受任何对象类型,使其为TreeSet<Integer>可以将Integer值放入TreeSet中,这是定义它的方式

TreeSet<Integer> elems = new TreeSet<>();

您正在使用一个常规循环,在您的案例工作示例中,该循环可以用for-for替换

for (int anElemsToAdd : elemsToAdd) {
   elems.add(anElemsToAdd);
}

最后,您无需定义大小为new Integer[elems.size()]的{​​{1}}

在所有更改之后,这是最终结果

elems.toArray(new Integer[0])