私は以下のコードを吹き込みました。私はif (something.isPresent())
行を避け、Optional<Something> something
を宣言する方法を見つけようとしました。代わりにOptional.orElse()
メソッドをチェーンして結果を直接返したいと思います。しかし、メソッドが見つからない場合にメソッドがnullを返す必要があるので、方法を見つけることができないようです。もし見つかった場合は、メソッドを呼び出してから戻る必要があります。結果に対してメソッドを呼び出す必要があるときにorElseを使用するには?
良い方法がありますか?
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class OrElseWhat {
private class Something {
private String it;
Something(String it) { this.it = it; }
String getIt() { return it; }
}
private List<Something> somethings = new ArrayList<Something>() {
{
add(new Something("one"));
add(new Something("two"));
add(new Something("three"));
}
};
public String getFourOrNull() {
Optional<Something> something = somethings.stream()
.filter(s -> s.getIt().equals("four"))
.findAny();
if (something.isPresent()) {
return something.get().getIt();
}
return null;
}
}
素晴らしい!私は地図がNPEを得ると思ったが、彼らはそれについても考えていたと思う。 – uzilan