Java 10 — новые API и опции
Версия JDK 10 добавила более 70 новых API и опций в библиотеку Java. Ниже приведены некоторые важные улучшения.
Метод Optional.orElseThrow()
Новый метод orElseThrow() доступен в классе java.util.Optional, который теперь является предпочтительной альтернативой для get() метод.
API для создания неизменяемых коллекций
Новый метод copyOf() доступен в интерфейсах List, Set и Map, которые могут создавать новые экземпляры коллекции из существующих. В классе Collector появились новые методы toUnmodifiableList(), toUnmodifiableSet() и toUnmodifiableMap(). чтобы получить элементы потока в неизменяемую коллекцию.
Отключить отслеживание последнего использования JRE
Представлен новый флаг jdk.disableLastUsageTracking, который отключает отслеживание последнего использования JRE для работающей виртуальной машины.
Хешированный пароль
Пароли в виде простого текста, доступные в файле jmxremote.password, теперь перезаписываются агентом JMX хэшем SHA3-512.
Поддержка javadoc для нескольких таблиц стилей
Новая опция доступна для команды javadoc как --add-stylesheet. Этот параметр поддерживает использование нескольких таблиц стилей в сгенерированной документации.
Поддержка javadoc для методов переопределения
Новая опция доступна для команды javadoc как --overridden-methods=value. Поскольку многие классы переопределяют унаследованные методы, но не изменяют спецификацию. Параметр --overridden-methods=value позволяет сгруппировать эти методы с другими унаследованными методами, вместо того, чтобы снова документировать их отдельно.
Поддержка javadoc для сводки
Новый встроенный тег {@summary ...} позволяет указать текст, который будет использоваться в качестве сводки описания API. По умолчанию сводка описания API выводится из первого предложения.
Пример
В следующей программе показано использование некоторых новых API в JAVA 10.
import java.util.List; import java.util.stream.Collectors; public class Tester { public static void main(String[] args) { var ids = List.of(1, 2, 3, 4, 5); try { // get an unmodifiable list List<Integer> copyOfIds = List.copyOf(ids); copyOfIds.add(6); } catch(UnsupportedOperationException e){ System.out.println("Collection is not modifiable."); } try{ // get an unmodifiable list List<Integer> evenNumbers = ids.stream() .filter(i -> i % 2 == 0) .collect(Collectors.toUnmodifiableList());; evenNumbers.add(6); }catch(UnsupportedOperationException e){ System.out.println("Collection is not modifiable."); } } }
Вывод
Будет напечатан следующий вывод.
Collection is not modifiable. Collection is not modifiable.
java