Obwohl aus dem Beispiel in der Frage scheint es, dass OP speziell über die besondere Form der checkNotNull
fragt, ist es ein subtiler Unterschied in der Regel zugunsten der checkNotNull
verwendet, die reflektiert wird, in dem printf
Stil Form varargs. Zum Beispiel Guava Preconditions
verwenden Sie können sich bilden:
public void getInput(String companyName) {
String context = "Google";
String moreContext = "Facebook";
checkNotNull(companyName, "Why not try %s or %s", context, moreContext);
}
mit Objects.requireNonNull
werden Sie so etwas wie
public void getInput(String companyName) {
String context = "Google";
String moreContext = "Facebook";
checkNotNull(companyName, "Why not try " + context + " or " + moreContext);
}
Referenz zu tun haben: Siehe Unterteil Preconditions Explained
Einfach, varargs „printf "Ausnahmemeldungen". (Dieser Vorteil ist auch, warum wir empfehlen weiterhin checkNotNull über Objects.requireNonNull zu verwenden, in JDK 7 eingeführt)
EDIT: Eine Sache, obwohl zu beachten ist, dass alle Argumente an die errorMessageTemplate umgewandelt werden zu String mit String.valueOf(arg)
so Sie können nur% s und nicht andere Spezifizierer wie% d oder% f usw. verwenden.
Direkt von der Quelle. Vielen Dank! – vpiTriumph