繁体   English   中英

Object[] 不能转换为 Integer[]

[英]Object[] cannot be converted to Integer[]

使用 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()]);
 }

我已经搜索了其他线程的答案,但是他们都建议使用 toArray 方法和一个整数数组作为参数,但我的仍然抛出错误。

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

改变

TreeSet elems = new TreeSet<Integer>();

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

Erans Answer 解决了错误,但我也想做出我的贡献

TreeSet<T>接受任何对象类型,使其成为TreeSet<Integer>将允许您将Integer值放在 TreeSet 中,以下是定义它的方法

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

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

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

最后,您不需要定义new Integer[elems.size()]其大小将其定义为elems.toArray(new Integer[0])就足够了

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

public static void main(String[] args) {
    TreeSet<Integer> elems = new TreeSet<>();
    int[] elemsToAdd = {1, 2, 3, 4};
    for (int anElemsToAdd : elemsToAdd) {
        elems.add(anElemsToAdd);
    }
    Integer[] elemsArray = elems.toArray(new Integer[0]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM