Как насчет:
SeniorEmployee sEmp = emp.stream()
.filter(SeniorEmployee.class::isInstance)
.findFirst()
.map(SeniorEmployee.class::cast)
.orElse(null);
Где вы можете ввести другое значение по умолчанию в разделе orElse
. Это решение использует findFirst
, чтобы получить первый элемент, который соответствует Predicate
Также обратите внимание, что orElse(null)
должен сделать код эквивалентным коду в вопросе. Лучше дать значение, отличное от null
, так как это наносит ущерб всей цели Optional