Chociaż od przykład w pytaniu wydaje się, że PO pyta konkretnie o szczególnej formy checkNotNull
, jest jeszcze jedna subtelna różnica w ogóle na rzecz korzystania checkNotNull
co znajduje odzwierciedlenie w stylu printf
varargs formularza. Na przykład przy użyciu Guava Preconditions
możesz zrobić następujące:
public void getInput(String companyName) {
String context = "Google";
String moreContext = "Facebook";
checkNotNull(companyName, "Why not try %s or %s", context, moreContext);
}
z Objects.requireNonNull
trzeba będzie coś zrobić jak
public void getInput(String companyName) {
String context = "Google";
String moreContext = "Facebook";
checkNotNull(companyName, "Why not try " + context + " or " + moreContext);
}
Zobacz: dolny odcinek Preconditions Explained
Proste, varargs „printf stylu "wiadomości wyjątków. (Ta zaleta jest również dlatego zalecamy w dalszym ciągu korzystać z checkNotNull nad Objects.requireNonNull wprowadzony w JDK 7.)
EDIT: Jedno jest jednak, aby pamiętać, że wszystkie argumenty do errorMessageTemplate są konwertowane na ciąg przy użyciu String.valueOf(arg)
tak możesz używać tylko% s, a nie innych specyfikatorów, takich jak% d lub% f itp.
Prosto ze źródła. Dziękuję Ci! – vpiTriumph