Читаючи вихідний код JDK, я вважаю, що автор перевіряє параметри, якщо вони є нульовими, а потім викидає нові NullPointerException () вручну. Чому вони це роблять? Я думаю, що цього робити не потрібно, оскільки він викине новий NullPointerException (), коли викликає будь-який метод. (Ось, наприклад, вихідний код 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;
}
ArgumentNullException
у подібних випадках (а не NullReferenceException
) - це насправді гарний питання щодо того, чому б ви NullPointerException
тут чітко піднімали (а не інший).
IllegalArgumentException
або NullPointerException
для нульового аргументу. Конвенція JDK - остання.