Используя Optional
, я хочу вернуть определенную реализацию (First
или Second)
интерфейса в соответствии с результатом сопоставления. Это интерфейс, который First
и Second
реализовать:
public interface MyInterface {
Number number();
}
Следующее Optional
использование ошибочно:
final String string = ... // might be null
final Number number = Optional.ofNullable(string)
.map(string -> new First())
.orElse(new Second()) // erroneous line
.number();
orElse (com.mycompany.First)
в опционально нельзя применить к (com.mycompany.Second)
Почему строка ошибочна, поскольку оба класса First
и Second
реализуют интерфейс MyInterface
, а метод MyInterface::number
возвращает Number
? Как правильно это реализовать?