我一直在写作
Object o; if (o!=null) String s = o.toString();
如果有简单的方法来处理这个案子呢?
如果 o 为 null,则 String.valueOf(o)返回字符串“ null”。
String.valueOf(o)
另一个可能是 String s = o == null? "default" : o.toString()
String s = o == null? "default" : o.toString()
如果对象是 null,那么 String类中的静态 valueOf方法将执行 null 检查并返回 "null":
null
String
valueOf
"null"
String stringRepresentation = String.valueOf(o);
这里的代码实际上只有一行:
return obj == null ? "" : obj.toString();
只有一个注意事项-使用 toString()只用于调试和日志记录。不要依赖于 toString()的格式。
toString()
取决于您希望它在 null值上是什么样的,但是您可以这样做
Object o = String s = ""+o;
这是 println 和 string append 等的默认行为。
看起来,当 o 不是 NULL 时,您希望得到一个 String。 但是我感到困惑的是,如果像您这样编写代码,您就不能访问变量 s (您知道在 if 语句的作用域中是 s)。
试试 Objects.toString(Object o, String nullDefault)
Objects.toString(Object o, String nullDefault)
例如:
import java.util.Objects; Object o1 = null; Object o2 = "aString"; String s; s = Objects.toString(o1, "isNull"); // returns "isNull" s = Objects.toString(o2, "isNull"); // returns "aString"
Bozho 及一月至五十九日的最新答案以供参考:
然而,自从3.2版(Commons/lang3)以来,Apache Commons 中的这个方法现在是 不赞成。他们的目标是删除 Jdk7中可用的所有方法。该方法已被 爪哇7中的 java.util.Objects.toString(Object)所取代,并可能在未来的版本中被删除。经过一些讨论,他们还没有删除它(目前在3.4) ,它仍然作为一个不推荐的方法可用。
java.util.Objects.toString(Object)
但是请注意,这个 java 7 + 方法将返回“ null”作为空引用,而这个方法返回空 String。要保留行为,请使用
java.util.Objects.toString(myObject, "")
你可以通过以下方式使用 java 8可选项:
String s = Optional.ofNullable(o).map(Object::toString).orElse("null");
import java.util.Objects; Objects.toString(object, "")
简单和0运行时异常:)