spr*_*ter 6 java optional java-8
我有以下几点:
class Foo implements Inter {
void doSomething();
}
Optional<Inter> getPossible() {
Optional<Foo> possible = ...;
possible.ifPresent(Foo::doSomething);
return possible.map(f -> f);
}
Run Code Online (Sandbox Code Playgroud)
getPossible需要返回 anOptional<Inter>因为它覆盖了超类的实现。
方法末尾的映射纯粹是为了转换类型。有没有更优雅的选择?
为了明确您只需要转换,您可以将 Class::cast 与 .map 一起使用:
class Foo implements Inter {
void doSomething();
}
Optional<Inter> getPossible() {
Optional<Foo> possible = ...;
possible.ifPresent(Foo::doSomething);
return possible.map(Inter.class::cast);
}
Run Code Online (Sandbox Code Playgroud)
返回 aOptional<? extends Inter>而不是Optional<Inter>。