何时使用' java.util.Objects。*'?

时间:2015-07-03 06:14:59

标签: java oop java-7

我正在浏览Java 7个功能,他们谈到了java.util.Objects课程。

我无法理解的是

之间的功能差异
java.util.Objects.toString(foo)
vs
foo == null ? "":foo.toString()

我只能看到额外的是一个空检查和功能表示法而不是OOP样式。

我错过了什么?

2 个答案:

答案 0 :(得分:8)

java.util.Objects.toString()的主要优点是你可以在一个可能为null的返回值上轻松使用它,而不是需要创建一个新的局部变量(或者更糟糕的是调用该函数两次)。

比较

//currently the command i am using is this: 

 String[] cmd = new String[]{"logcat", "-f", filepath, "-v", "time"};

//i think it should be something like this 
 String[] cmd = new String[]{"logcat", "-f", filepath, "-v", "time", "-v" ,"tag: D/"};

或令人畏惧的错误诱导

Foo f = getFoo();
String foo = (f==null) ? "null" : f.toString();

到基于String foo = (getFoo()==null) ? "null" : getFoo().toString() 的版本

Objects.toString

答案 1 :(得分:5)

调用Objects.toString(foo)只是不需要你记住进行空检查,这意味着你可以直接在方法返回值(例如Objects.toString(getPossibleNullObject()))上使用它而不将其存储在变量中(或者两次调用方法)。

但请注意,该方法实际返回:

  

为非空参数调用toString而为"null"参数调用null的结果

所以它实际上相当于:

foo == null ? "null" : foo.toString();

如果您希望""为空值,则可以使用传递nullDefault返回值的重载Objects.toString(foo, "")