简体   繁体   English

如何修复:java.lang.ClassCastException:java.util.ArrayList无法强制转换为java.lang.Integer

[英]How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer

I encountered a problem when I tried to run the following code: 我尝试运行以下代码时遇到问题:

ArrayList paretoSet=new ArrayList();   // contains a collection of ArrayList
ArrayList<Integer> toPass=new ArrayList<Integer>();
int[] fParetoSet=new int[ParetoSet.size()];
int[] gParetoSet=new int[ParetoSet.size()];

for (int i=0;i<paretoSet.size();i++){
        toPass.clear();
        toPass.add((Integer)paretoSet.get(i));
        int [] totake=calculate(toPass);
        fParetoSet[i]=totake[0];
        gParetoSet[i]=totake[1];       
    }

` where claculate(ArrayList x) is a method that takes an integer arraylist and returns an integer array. `where claculate(ArrayList x)是一个采用整数arraylist并返回整数数组的方法。 I can not make Paretoset an integer arraylist as it creates problem in other parts of my program. 我不能让Paretoset成为一个整数的arraylist,因为它会在我的程序的其他部分产生问题。 I encountered an exception in the line toPass.add((Integer)paretoSet.get(i)); 我在行toPass.add((Integer)paretoSet.get(i))中遇到异常;
as java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer How should I fix this problem? as java.lang.ClassCastException:java.util.ArrayList无法强制转换为java.lang.Integer如何解决此问题?
Thanks in advance 提前致谢

If ParetoSet is a collection of ArrayList , then the call ParetoSet.get(i) will return the ArrayList at index i . 如果ParetoSetArrayList的集合,则调用ParetoSet.get(i)将返回索引i处的ArrayList As the error says, an ArrayList is not aa type of Integer and cannot be cast to one. 正如错误所说, ArrayList不是Integer类型,不能转换为一个。

Other points of interest: 其他兴趣点:

  • your variable should be camel case: pareToSet 你的变量应该是驼峰式的: pareToSet
  • auto-boxing means the cast in your for loop has been unnecessary since JDK5 自动装箱意味着自JDK5以来,你的for循环中的强制转换是不必要的
  • Paretoset has been declared with a raw type Paretoset已被宣布为原始类型
  • type inference makes new ArrayList<Integer>() redundant since JDK7 由于JDK7,类型推断使得new ArrayList<Integer>()冗余

EDIT 编辑

  • your variable should be camel case: paretoSet , as per Jim's comments 你的变量应该是驼峰式的: paretoSet ,根据Jim的评论

EDIT 编辑

An ArrayList is neither conceptually, or actually an Integer. ArrayList既不是概念上的,也不是实际上的Integer。 If you say the sentence 'A list is a type of integer' it doesn't make sense. 如果你说句子'列表是一种整数',那就没有意义了。 If we check the javadoc for ArrayList we can see that its inheritance tree is: 如果我们检查ArrayList的javadoc ,我们可以看到它的继承树是:

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.ArrayList<E>

All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess

So we can say for example that ArrayList is a type of AbstractList , or AbstractCollection , but not an Integer as Integer is not part of its lineage. 因此,我们可以说,例如, ArrayList是一种AbstractListAbstractCollection ,但不是Integer因为Integer不是其谱系的一部分。

your program having typecasting issue on below lines. 你的程序在下面的行上有类型转换问题。 your are trying to add typecast list of arraylist to Integer arryalist. 您正在尝试向Integer arryalist添加类型列表的arraylist。 this wrong. 这个错了。 if you want add the arraylist objects to some other arryalist. 如果你想将arraylist对象添加到其他arryalist。 Please use generics as object. 请使用泛型作为对象。

ArrayList ParetoSet=new ArrayList();   // contains a collection of ArrayList
toPass.add((Integer)ParetoSet.get(i));

This should be like below: 这应该如下:

ArrayList<ArrayList> ParetoSet=new ArrayList<ArrayList>();  
ArrayList<ArrayList> toPass=new ArrayList<ArrayList>();  
toPass.add(ParetoSet.get(i));

Then you should change code bit to fit your further your logics 然后你应该改变代码位以适应你的逻辑

暂无
暂无

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

相关问题 java.lang.ClassCastException: java.util.Arrays$ArrayList 不能在 DAO 中转换为 java.lang.Integer - java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer in DAO java.lang.ClassCastException:java.util.Arrays $ ArrayList无法强制转换为java.lang.Integer - java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer 如何修复:java.lang.ClassCastException:java.util.ArrayList无法强制转换为double [] - How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to double[] java.lang.ClassCastException: java.util.Arrays$ArrayList 不能转换为 java.util.ArrayList - java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList java.lang.ClassCastException:无法强制转换java.lang.Integer - java.lang.ClassCastException: java.lang.Integer cannot be cast java.lang.ClassCastException:无法转换为java.lang.Integer - java.lang.ClassCastException: cannot be cast to java.lang.Integer java.lang.ClassCastException: java.util.ArrayList 不能转换为 java.lang.Object[] - java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Object[] java.lang.ClassCastException:java.util.ArrayList无法强制转换为java.lang.String - java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String java.lang.ClassCastException:无法将java.util.ArrayList强制转换为…CrExcessMaster - java.lang.ClassCastException: java.util.ArrayList cannot be cast to …CrExcessMaster java.lang.ClassCastException: java.util.ArrayList 不能转换为 com.parse.ParseObject - java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.parse.ParseObject
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM