【发布时间】:2017-02-27 21:40:47
【问题描述】:
我在 Eclipse 中调试另一个项目的一些代码,发现即使没有错误标志(只是警告),
try
{
conn = dss.connect();
System.out.println("[SIGN]: Executing first step ");
beanResultVO = executeFirstStep(usuario,conn,parametros,beanResultadoVO);
if(beanResultVO.getResultCode() == IConstants.SWS_MSG_SUCCESSFUL){
BigDecimal someCoolVar = (BigDecimal)beanResultVO.getResultObject();
System.out.println("[SIGN]: end of the first step ");
((ArrayList)beanResultVO.getResultObject()).add(someCoolVar); // <--- WARNING HERE: The method add(Object) belongs to the raw type ArrayList. References to generic type ArrayList<E> should be parameterized
saveStuff(conn);
}
}
catch(Exception e)
{
System.out.println("error: "+e); // THIS SHOWS --> java.math.BigDecimal incompatible with java.util.ArrayList
e.printStackTrace();
beanResultVO.setResultCode(IConstants.SWS_MSG_ERROR);
undoStuff(conn);
}
一旦我执行到带有警告的行,它就会直接转到 try/catch 块中的异常,并显示以下消息:
java.math.BigDecimal 与 java.util.ArrayList 不兼容
这里是 beanResultVO :
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;
}
}
现在,我已经尝试做
((ArrayList<BigDecimal>)beanResultVO.getResultObject()).add(someCoolVar);
得到不同的警告:
从 Object 到 ArrayList 的未经检查的强制转换
但同样的例外
【问题讨论】:
标签: java arraylist classcastexception bigdecimal