BigDecimal与ArrayList、java ClassCastException不兼容
我在Eclipse中调试来自不同项目的一些代码,发现即使没有错误符号(只是警告) 现在,我已经试着去做了BigDecimal与ArrayList、java ClassCastException不兼容,java,arraylist,classcastexception,bigdecimal,Java,Arraylist,Classcastexception,Bigdecimal,我在Eclipse中调试来自不同项目的一些代码,发现即使没有错误符号(只是警告) 现在,我已经试着去做了 ((ArrayList<BigDecimal>)beanResultVO.getResultObject()).add(someCoolVar); ((ArrayList)beanResultVO.getResultObject()).add(someCoolVar); 得到不同的警告: 未选中从对象到ArrayList的强制转换 但同样的例外是,您的问题是beanResul
((ArrayList<BigDecimal>)beanResultVO.getResultObject()).add(someCoolVar);
((ArrayList)beanResultVO.getResultObject()).add(someCoolVar);
得到不同的警告:
未选中从对象到ArrayList的强制转换
但同样的例外是,您的问题是beanResultVO.getResultObject()是一个大整数,而不是ArrayList。因此,当您尝试将其转换为ArrayList时,它会给出以下异常
((ArrayList)beanResultVO.getResultObject())
由于存在错误,代码将永远不会运行
BigDecimal someCoolVar = (BigDecimal)beanResultVO.getResultObject();
就在几行之前
((ArrayList)beanResultVO.getResultObject()).add(someCoolVar);
并且在和
resultObject
之间更改resultObject
成员的resultObject
不能同时是ArrayList
和bigdecimic
。在Java中,所有转换操作都会被检查。当无法执行强制转换时,将抛出ClassCastException。在你的例子中
beanResultVO.getResultObject()
是BigDecimal的类型。BigDecimal不能强制转换为ArrayList,因为BigDecimal不是ArrayList的超类。
如果需要ArrayList,可以使用
Arrays.asList(beanResultVO.getResultObject())
或
它返回您想要的类型,即
List<BigDecimal>
列表
一个愚蠢的问题:为什么说它是大整数?
Arrays.asList(beanResultVO.getResultObject())
Collections.singletonList(beanResultVO.getResultObject())
List<BigDecimal>