我正在调试Eclipse中不同项目的一些代码,发现即使没有错误标志(只是警告),
public class BeanResultadoVO extends BeanBase{
private int resultCode = 0;
private String resultMessage;
private Object resultObject;
public int getResultCode() {
return resultCode;
}
public void setResultCode(int resultCode) {
this.resultCode = resultCode;
}
public String getResultMessage() {
return resultMessage;
}
public void setResultMessage(String resultMessage) {
this.resultMessage = resultMessage;
}
public Object getResultObject() {
return resultObject;
}
public void setResultObject(Object resultObject) {
this.resultObject = resultObject;
}
}
一旦我执行带有警告的行,它就会直接转到try / catch块中的异常,并显示以下消息:
java.math.BigDecimal与java.util.ArrayList不兼容
这是 beanResultVO :
((ArrayList<BigDecimal>)beanResultVO.getResultObject()).add(someCoolVar);
现在,我已经尝试过了
{{1}}
得到不同的警告:
取消选中从Object转换为ArrayList
但同样的例外
答案 0 :(得分:0)
你的问题是beanResultVO.getResultObject()是一个BigInteger,而不是一个ArrayList。因此,当您尝试将其转换为ArrayList时,它会为您提供此异常
((ArrayList)beanResultVO.getResultObject())
答案 1 :(得分:0)
由于有
,代码永远不会运行BigDecimal someCoolVar = (BigDecimal)beanResultVO.getResultObject();
之前的几行
((ArrayList)beanResultVO.getResultObject()).add(someCoolVar);
并且任何改变resultObject
中间beanResultVO
成员和resultObject
的内容都不能同时为ArrayList
和BigDecimal
。
答案 2 :(得分:0)
在Java中,检查所有的转换操作。无法进行强制转换时抛出ClassCastException。在你的例子中
beanResultVO.getResultObject()
是BigDecimal的类型。 BigDecimal无法强制转换为ArrayList,因为BigDecimal不是ArrayList的超类。 如果需要ArrayList,可以使用
Arrays.asList(beanResultVO.getResultObject())
或
Collections.singletonList(beanResultVO.getResultObject())
它返回你想要的类型,即
List<BigDecimal>