En azından kısmen, bir araya getirmenize containsKeyve gettek bir görüşmeye izin vermenize inanıyorum . Harita null değerlerini tutabilirse, getnull değerini döndürüp döndürmediğini anlamanın bir yolu yoktur , çünkü bu değer için herhangi bir anahtar yoktur veya yalnızca değer null olduğundan.
Bu neden bir sorun? Çünkü bunu kendiniz yapmanın güvenli bir yolu yok. Aşağıdaki kodu alın:
if (m.containsKey(k)) {
return m.get(k);
} else {
throw new KeyNotPresentException();
}
Yana mbir eşzamanlı haritasıdır, anahtar k arasına silinebilir containsKeyve getyerine istenenden daha tablodaki asla bir null dönmek için bu pasajı neden aramalar KeyNotPresentException.
Normalde bunu senkronize ederek çözersiniz, ancak eşzamanlı bir harita ile elbette işe yaramaz. Bu nedenle imzasının getdeğişmesi gerekiyordu ve bunu geriye dönük olarak uyumlu bir şekilde yapmanın tek yolu, kullanıcının null değerleri ilk etapta girmesini önlemek ve bunu "anahtar bulunamadı" için yer tutucu olarak kullanmaya devam etmekti.