虽然从问题中的例子来看,OP似乎专门询问了的特定形式,但在一般情况下,还有一个更微妙的区别,它反映在样式varargs形式中。例如,您可以使用执行以下操作:checkNotNull
checkNotNull
printf
Guava Preconditions
public void getInput(String companyName) {
String context = "Google";
String moreContext = "Facebook";
checkNotNull(companyName, "Why not try %s or %s", context, moreContext);
}
与你将不得不做这样的事情Objects.requireNonNull
public void getInput(String companyName) {
String context = "Google";
String moreContext = "Facebook";
requireNonNull(companyName, "Why not try " + context + " or " + moreContext);
}
参考:请参阅前提条件的底部解释
简单的 varargs “printf-style” 异常消息。(这个优势也是为什么我们建议继续使用checkNotNull over Objects.requireNonNull在JDK 7中引入的原因。
编辑:需要注意的一件事是,errorMessageTemplate的所有参数都转换为字符串,因此您只能使用%s,而不能使用%d或%f等其他类型说明符。String.valueOf(arg)