在java中从Object转换为string

时间:2018-06-15 11:21:37

标签: java

我有以下方法

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();
}

3 个答案:

答案 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

因为当列表只包含一个

时,您尝试获取第二个元素