Java 8 可选仅当可选时才添加返回结果。isPresent
2022-09-04 05:42:51
我有一段代码,其中接口具有Athose return方法和一些实现它以返回某些内容的类,其他则没有。
为了拥抱这个聪明的“空杀手”,以下是我尝试过的:
public interface Gun {
public Optional<Bullet> shoot();
}
public class Pistol implements Gun{
@Override
public Optional<Bullet> shoot(){
return Optional.of(this.magazine.remove(0));
}//never mind the check of magazine content
}
public class Bow implements Gun{
@Override
public Optional<Bullet> shoot(){
quill--;
return Optional.empty();
}
}
public class BallisticGelPuddy{
private Gun[] guns = new Gun[]{new Pistol(),new Bow()};
private List<Bullet> bullets = new ArrayList<>();
public void collectBullets(){
//here is the problem
for(Gun gun : guns)
gun.shoot.ifPresent(bullets.add( <the return I got with the method>)
}}
我为这个例子有多愚蠢而道歉。
如何检查我刚刚获得的退货,并仅在存在时才使用可选添加?
P.S. Optional 是否有任何真正的用处,即 if(X != null) 不能做到?