Beim Lesen von JDK-Quellcode wird häufig festgestellt, dass der Autor die Parameter überprüft, wenn sie null sind, und dann manuell eine neue NullPointerException () auslöst. Warum machen sie das? Ich denke, es ist nicht nötig, dies zu tun, da es eine neue NullPointerException () auslöst, wenn es eine Methode aufruft. (Hier ist zum Beispiel ein Quellcode von HashMap :)
public V computeIfPresent(K key,
BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
if (remappingFunction == null)
throw new NullPointerException();
Node<K,V> e; V oldValue;
int hash = hash(key);
if ((e = getNode(hash, key)) != null &&
(oldValue = e.value) != null) {
V v = remappingFunction.apply(key, oldValue);
if (v != null) {
e.value = v;
afterNodeAccess(e);
return v;
}
else
removeNode(hash, key, null, false, true);
}
return null;
}
ArgumentNullExceptionin solchen Fällen (und nicht NullReferenceException) ansprechen - es ist eigentlich eine wirklich gute Frage, warum Sie das NullPointerExceptionhier explizit ansprechen würden (anstatt eine andere).
IllegalArgumentExceptionoder nicht NullPointerException. Die JDK-Konvention ist die letztere.