В Java 9 вместе с остальными нововведениями появились новые способы создания неизменяемый коллекций. Раньше, до Java 9, мы использовали методы Collections.unmodifiable..., в Java 9 появились новые методы List.of, Map.of, Set.of.
Обратите внимание! Новые методы Set.of, List.of и Map.of не принимают null-значения. Если попытаться передать им null-значение, то возникнет java.lang.NullPointerException.
Как мы создавали неизменяемый List в Java 8:
1 2 3 4 |
List<String> list1 = new ArrayList<>(); list1.add("Vasya"); list1.add("Petya"); List<String> unmodifiableList1 = Collections.unmodifiableList(list1); |
С новым методом List.of в Java 9:
1 |
List<String> unmodifiableList = List.of("Vasya", "Petya"); |
Как мы создавали неизменяемый Set в Java 8:
1 2 3 4 |
Set<String> set1 = new HashSet<>(); set1.add("Vasya"); set1.add("Petya"); Set<String> unmodifiableSet1 = Collections.unmodifiableSet(set1); |
С новым методов Set.of в Java 9:
1 |
Set<String> unmodifiableSet = Set.of("Vasya", "Petya"); |
Как мы создавали неизменяемый Map в Java 8:
1 2 3 4 |
Map<String, String> map1 = new HashMap<>(); map1.put("id1", "Vasya"); map1.put("id2", "Petya"); Map<String, String> unmodifiableMap1 = Collections.unmodifiableMap(map1); |
С новым методом Map.of в Java 9:
1 |
Map<String, String> unmodifiableMap = Map.of("id1", "Vasya", "id2", "Petya"); |
Созданные коллекции работают так же, как и коллекции, которые создавались с помощью старых методов Collections.unmodifiable*, то есть бросают исключение java.lang.UnsupportedOperationException при попытке вызвать метод, изменяющий содержимое коллекции.