JDK kaynak kodunu okurken, yazarın parametreleri null olup olmadığını kontrol edip yeni NullPointerException () 'ı manuel olarak atacağını ortak buluyorum. Neden yapıyorlar? Herhangi bir yöntem çağırdığında yeni NullPointerException () atacak beri bunu gerek yok düşünüyorum. (Örneğin, HashMap'in bazı kaynak kodu:
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
durumlarda (yerine NullReferenceException
) yükseltmektir - aslında neden NullPointerException
burada (farklı bir tane yerine) açıkça ortaya koyacağınız konusunda gerçekten iyi bir soru .
IllegalArgumentException
ya NullPointerException
boş argüman için. İkincisi JDK sözleşmesidir.