Avec Java 9, la nouvelle usine de méthodes ont été introduites pour l' List
, Set
et Map
interfaces. Ces méthodes permettent rapidement de l'instanciation d'un objet Map avec des valeurs dans une ligne. Maintenant, si nous considérons:
Map<Integer, String> map1 = new HashMap<Integer, String>(Map.of(1, "value1", 2, "value2", 3, "value3"));
map1.put(4, null);
Le ci-dessus est autorisé sans aucune exception, alors que si nous le faisons:
Map<Integer, String> map2 = Map.of(1, "value1", 2, "value2", 3, "value3", 4, null );
Il lance:
Exception in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:221)
..
Je ne suis pas en mesure d'obtenir, pourquoi null n'est pas autorisé dans le second cas.
Je sais HashMap peut prendre la valeur null comme une clé et une valeur, mais pourquoi a été que limitée dans le cas de la Carte.d'?
La même chose se produit dans le cas d' java.util.Set.of("v1", "v2", null)
et java.util.List.of("v1", "v2", null)
.