我有以下方法
public List<Object> ProductbyJobcode (String jobcode)
{
List<Object> temp = new ArrayList<Object>();
temp = riskJobCodeProductMappingDAO.fetchProductByJobCode(jobcode);
return temp;
}
我将上述方法的Object列表中的输入转换为Object类型列表
List<Object> temp = new ArrayList<Object>() ;
temp = ProductbyJobcode(jobcode);
现在我正在尝试将值检索到字符串但我得到异常,请告知如何实现相同的方法我将对象转换为字符串
String Product ;
String Actiontype;
for (int i = 0; i < temp.size(); i++) {
product = temp.get(0).toString();
Actiontype = temp.get(1).toString();
}
答案 0 :(得分:1)
Object.toString()
可以提供NPE
。因此更合适的方法是String.valueOf()
。
String Product = temp.size() >= 1 ? String.valueOf(temp.get(0)) : null;
String Actiontype = temp.size() >= 2 ? String.valueOf(temp.get(1)) : null;
答案 1 :(得分:0)
好吧
for (int i = 0; i < temp.size(); i++) {
product = temp.get(0).toString();
Actiontype = temp.get(1).toString();
}
并没有真正正确地测试列表的边界;列表中可能只有一个String
,这意味着temp.get(1)
会引发IndexOutOfBoundsException
。
目前还不清楚你究竟要做什么,但这应该有效:
for (int i = 0; < temp.size; i++) {
System.out.println(temp.get(0));
}
如果你真的需要这两个项目,你可能想要这样的东西
product = (temp.isEmpty()) ? null : temp.get(0).toString();
actionType = (temp.size() > 1) ? temp.get(1).toString() : null;
答案 2 :(得分:0)
问题在于,如果您的临时列表只包含1个元素,那么您将尝试在此行中获取第二个元素:
Actiontype = temp.get(1).toString();
那个原因:
java.lang.IndexOutOfBoundsException
因为当列表只包含一个
时,您尝试获取第二个元素