我有以下几点:
class Foo implements Inter {
void doSomething();
}
Optional<Inter> getPossible() {
Optional<Foo> possible = ...;
possible.ifPresent(Foo::doSomething);
return possible.map(f -> f);
}
getPossible
需要返回Optional<Inter>
,因为它覆盖了父类(super class)的实现。该方法末尾的那个映射纯粹是为了转换类型。还有更优雅的选择吗?
最佳答案
为了使您仅需要强制转换,可以将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);
}