Java 10: 70+ новых API и улучшений
JDK 10 добавил более 70 новых API и опций. Основные улучшения:
Optional.orElseThrow()
Новый метод orElseThrow() в java.util.Optional — предпочтительная альтернатива get() (бросает NoSuchElementException, если значение отсутствует).
API для создания неизменяемых коллекций
- Статический метод
copyOf()в интерфейсахList,Set,Map— создаёт новую неизменяемую коллекцию из существующей. - В классе
Collectors:toUnmodifiableList(),toUnmodifiableSet(),toUnmodifiableMap()— собирают элементы стрима в неизменяемые коллекции.
Отключение отслеживания последнего использования JRE
Флаг jdk.disableLastUsageTracking отключает трекинг последнего использования JRE для запущенной VM.
Хеширование паролей в jmxremote.password
Пароли в текстовом виде в файле jmxremote.password теперь перезаписываются их SHA3-512 хешами JMX-агентом.
Javadoc: поддержка нескольких стилей
Опция --add-stylesheet позволяет использовать несколько CSS при генерации документации.
Javadoc: группировка переопределённых методов
Опция --overridden-methods=value группирует наследуемые методы, не меняющие спецификацию, вместо отдельного документирования.
Javadoc: инлайн-тег {@summary}
Тег {@summary ...} задаёт текст для краткого описания API. По умолчанию берётся первое предложение.
Пример: неизменяемые коллекции
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 {
List<Integer> copyOfIds = List.copyOf(ids);
copyOfIds.add(6); // UnsupportedOperationException
} catch (UnsupportedOperationException e) {
System.out.println("Collection is not modifiable.");
}
try {
List<Integer> evenNumbers = ids.stream()
.filter(i -> i % 2 == 0)
.collect(Collectors.toUnmodifiableList());
evenNumbers.add(6); // UnsupportedOperationException
} catch (UnsupportedOperationException e) {
System.out.println("Collection is not modifiable.");
}
}
}
Вывод
Collection is not modifiable.
Collection is not modifiable.
java
- Освоение операторов Java: типы, синтаксис и практические примеры
- Комментарии в Java: типы, использование и лучшие практики
- Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
- Освоение строк в Java: создание, методы и лучшие практики
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
- Освоение Java Autoboxing и Unboxing: практические примеры и лучшие практики