Optional
を使ってて、Some
のときとEmpty
のときで処理を変えたい場合
Optional<Hoge> hoge = repository.find("hoge");
if (hoge.isPresent()) {
// some processing.
return ok(hogeJson);
}
return badRequest("sorry...");
FPっぽくかけないかなーと思ったので以下の感じにした。
return repository.find("hoge")
.map(hoge -> {
// some processing.
return ok(hogeJson);
})
.orElse(badRequest("sorry..."));
すっきりした。
こんな書き方もできるんだ…
return repository.find("hoge")
.<Supplier>map(hoge -> () -> {
// some processing
return Ok(hogeJson);
})
.orElse(() -> {
return NotFound("sorry...");
})
.get()
なんか、これだとあんまり意味ないか。
高階関数の使い道がいまいちまだわからない…