来自Google的Guava图书馆的Preconditions的Javadoc指出:
使用
com.google.common
的项目通常应避免使用Objects.requireNonNull(Object)。相反,请使用适合此情况的checkNotNull(Object)或Verify.verifyNotNull(Object)中的任何一个。 (对于接收消息的重载也是如此。)
这项建议背后的动机是什么?我无法在Javadoc中找到任何内容。
我的意思是,他们几乎做同样的事情,在这些情况下,通常最好使用标准API(例如,Joda-Time背后的人现在建议人们使用java.time
,几乎弃用自己的框架。)
例如,这两行输入验证执行相同的操作:
class PreconditionsExample {
private String string;
public PreconditionsExample(String string) {
this.string = Objects.requireNonNull(string, "string must not be null");
this.string = Preconditions.checkNotNull(string, "string must not be null");
}
}
答案 0 :(得分:4)
Guava的版本提供了许多接受格式字符串和参数的重载。引用PreconditionsExplained wiki:
我们倾向于将自己的先决条件检查视为例如该 来自Apache Commons的可比实用工具有几个原因。简言之:
...
- 简单,varargs“printf-style”异常消息。 (这个优势也是我们建议继续使用
checkNotNull
的原因 JDK 7中引入了Objects.requireNonNull。)
答案 1 :(得分:2)
AFAIK,
有关其他方式,
String output =
new ProcessExecutor()
.command(params)
.readOutput(true)
.timeout(1, TimeUnit.MINUTES)
.exitValue(0)
.directory(new File(inputFilePath))
.execute()
.outputUTF8();
使用Objects,您必须使用String.format。而且,两种方法的实现是相同的。