1

我有一个正在检索并转换为字符串的对象。.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)

4

5 回答 5

5

尝试使用String.valueOf(userDict.get("key1")). 根据规范,如果给定一个空对象valueOf(Object o),它将调用toString()对象或返回字符串。"null"

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

编辑 2:如果您不介意让代码更密集,您可以使用三元运算符封装此方法的逻辑:

String value1 = (userDict.get("key1") == null) ? "" : userDict.get("key1").toString();
于 2013-05-31T21:03:43.163 回答
3

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

这取决于你。这取决于这段代码的目的是什么。

我试图避免为每个 .get() 编写一个 if 语句

如果您想避免重复代码,请为自己编写一个辅助方法。

于 2013-05-31T21:02:57.957 回答
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");
于 2013-05-31T22:25:29.543 回答
0

正如 Oli 建议的那样,您可以创建一个 helper 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");
于 2013-05-31T21:23:40.740 回答
-4

我会使用 try-catch

  try {
    value1 = userDict.get("key1").toString();
  } catch (Exception e) {
    value1 = 0;
  }
于 2013-05-31T21:05:50.470 回答