处理空到字符串错误

时间:2013-05-31 21:01:35

标签: java string null

我有一个正在检索并转向字符串的对象。 .get()可能会返回null,这在尝试转换为字符串时会崩溃。在这种情况下处理null的最佳方法是什么?如果返回null,也许将其设置为空字符串。我试图避免为每个.get()

编写一个if语句
 String value1 = userDict.get("key1").toString();
 String value2 = userDict.get("key2").toString();
 String value3 = userDict.get("key3").toString();
 String value4 = userDict.get("key4").toString();

编辑:

userDict是HashMap(String,Object)

5 个答案:

答案 0 :(得分:5)

尝试使用String.valueOf(userDict.get("key1"))。根据{{​​1}}的{​​{3}},它会在对象上调用valueOf(Object o),如果给定null对象,则返回字符串toString()

编辑:编辑指向java 7 api而不是java 6 api。

编辑2:如果您不介意使代码更密集,可以使用the specs封装此方法的逻辑:

"null"

答案 1 :(得分:3)

  

如果返回null,可能将其设置为空字符串。

这取决于你。这取决于此代码的用途。

  

我试图避免为每个.get()

编写一个if语句

如果你想避免重复的代码,那么自己写一个帮助方法。

答案 2 :(得分:0)

正如Oli所建议的那样,您可以创建一个如下所示的辅助get方法

String helperGet(String key){
    YourClassType t = userDict.get("key1");
    if(t!=null)
       return t.toString();
    else
       return "";
}

现在调用如下

 String value1 = userDict.helperGet("key1");
 String value2 = userDict.helperGet("key2");
 String value3 = userDict.helperGet("key3");
 String value4 = userDict.helperGet("key4");

答案 3 :(得分:0)

我使用辅助方法。这样的事情应该有用..

protected String getStringFromMap(Map<String,Object> map, String key)
{
   Object value = map.get(key);
   return value != null ? value.toString() : "";
}

然后你可以这样调用:

String value1 = getStringFromMap(userDict, "key1");
String value2 = getStringFromMap(userDict, "key2");
String value3 = getStringFromMap(userDict, "key3");
String value4 = getStringFromMap(userDict, "key4");

答案 4 :(得分:-4)

我会使用try-catch

  try {
    value1 = userDict.get("key1").toString();
  } catch (Exception e) {
    value1 = 0;
  }