我有一个正在检索并转向字符串的对象。 .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)
答案 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;
}