考虑以下接口:
public interface Vc{
}
public interface Vd< P extends Vc, C extends Vcc<{
...
}
public interface VcResult extends Vc{
}
存在一个返回Optional的方法
public Optional<Vc> getData()
这是我尝试改进代码的方法:
public VcResult mainMethod(){
Optional<Vc> vc = getData();
if(vc.isEmpty){
return anotherMethod();
}
return (VcResult)vc.get();
}
请建议转换这部分:
if(vc.isEmpty){
return anotherMethod();
}
return (VcResult)vc.get();
对此:
vc.map()..orElseGet(() -> anotherMethod());
上面语句中map的参数是什么。
您可以使用
VcResult
的类对象来转换它:
public VcResult mainMethod(){
return getData().map(VcResult.class::cast).orElseGet(this::anotherMethod);
}