< prev index next >

src/java.base/share/classes/java/util/ImmutableCollections.java

Print this page
rev 54417 : 8221924: get(null) on single-entry unmodifiable Map returns null instead of throwing NPE
Reviewed-by: XXX


 865         @Override public void replaceAll(BiFunction<? super K,? super V,? extends V> f) { throw uoe(); }
 866     }
 867 
 868     static final class Map1<K,V> extends AbstractImmutableMap<K,V> {
 869         @Stable
 870         private final K k0;
 871         @Stable
 872         private final V v0;
 873 
 874         Map1(K k0, V v0) {
 875             this.k0 = Objects.requireNonNull(k0);
 876             this.v0 = Objects.requireNonNull(v0);
 877         }
 878 
 879         @Override
 880         public Set<Map.Entry<K,V>> entrySet() {
 881             return Set.of(new KeyValueHolder<>(k0, v0));
 882         }
 883 
 884         @Override





 885         public boolean containsKey(Object o) {
 886             return o.equals(k0); // implicit nullcheck of o
 887         }
 888 
 889         @Override
 890         public boolean containsValue(Object o) {
 891             return o.equals(v0); // implicit nullcheck of o
 892         }
 893 
 894         private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
 895             throw new InvalidObjectException("not serial proxy");
 896         }
 897 
 898         private Object writeReplace() {
 899             return new CollSer(CollSer.IMM_MAP, k0, v0);
 900         }
 901 
 902         @Override
 903         public int hashCode() {
 904             return k0.hashCode() ^ v0.hashCode();




 865         @Override public void replaceAll(BiFunction<? super K,? super V,? extends V> f) { throw uoe(); }
 866     }
 867 
 868     static final class Map1<K,V> extends AbstractImmutableMap<K,V> {
 869         @Stable
 870         private final K k0;
 871         @Stable
 872         private final V v0;
 873 
 874         Map1(K k0, V v0) {
 875             this.k0 = Objects.requireNonNull(k0);
 876             this.v0 = Objects.requireNonNull(v0);
 877         }
 878 
 879         @Override
 880         public Set<Map.Entry<K,V>> entrySet() {
 881             return Set.of(new KeyValueHolder<>(k0, v0));
 882         }
 883 
 884         @Override
 885         public V get(Object o) {
 886             return o.equals(k0) ? v0 : null; // implicit nullcheck of o
 887         }
 888 
 889         @Override
 890         public boolean containsKey(Object o) {
 891             return o.equals(k0); // implicit nullcheck of o
 892         }
 893 
 894         @Override
 895         public boolean containsValue(Object o) {
 896             return o.equals(v0); // implicit nullcheck of o
 897         }
 898 
 899         private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
 900             throw new InvalidObjectException("not serial proxy");
 901         }
 902 
 903         private Object writeReplace() {
 904             return new CollSer(CollSer.IMM_MAP, k0, v0);
 905         }
 906 
 907         @Override
 908         public int hashCode() {
 909             return k0.hashCode() ^ v0.hashCode();


< prev index next >