Некоторые преимущества использования классов OptionalInt и OptionalDouble вместо их дженерик-версий:
- Снижение затрат на вычисления. 5 Классы OptionalInt и OptionalDouble считаются менее затратными с точки зрения вычислений, чем общий класс Optional. 5
- Упрощение кода. 5 Специализированные классы помогают избежать ненужных автоупаковок и распаковок примитивных значений в объекты (например, int → Integer). 3
- Избегание «магических» чисел. 4 Классы OptionalInt и OptionalDouble предназначены для ситуаций, когда метод должен возвращать некое число в случае успеха, но не-успех также возможен. 4
Однако на практике специализированные классы используются довольно редко. 3 Основная причина в том, что они предлагают ограниченное количество методов по сравнению с обычным Optional. 3 В этих классах доступны только основные методы: get(), orElse(), orElseGet(), orElseThrow(), ifPresent() и isPresent(). 3 Методы преобразования, такие как map() или flatMap(), в них отсутствуют. 3