6か月以上Java 8を使用しているので、新しいAPIの変更にかなり満足しています。私がまだ確信していない領域の1つは、いつ使用するかOptional
です。どこにでもそれを使いたいのかnull
、どこにも使いたくないのか、どんどん変わっていくようです。
私がそれを使用できる状況はたくさんあるようで、それが利点(読みやすさ/ nullの安全性)を追加するのか、それともオーバーヘッドを増やすだけなのか、私にはわかりません。
だから、私はいくつかの例を持っています、そして私はコミュニティOptional
が有益であるかどうかについての考えに興味があります。
1-メソッドが返すことができるパブリックメソッドの戻り値の型としてnull
:
public Optional<Foo> findFoo(String id);
2-パラメータが次の場合のメソッドパラメータとしてnull
:
public Foo doSomething(String id, Optional<Bar> barOptional);
3-Beanのオプションのメンバーとして:
public class Book {
private List<Pages> pages;
private Optional<Index> index;
}
4-でCollections
:
一般的に私は思いません:
List<Optional<Foo>>
何かを追加します-特に値のfilter()
削除null
などに使用できますがOptional
、コレクションでの良い使用法はありますか?
私が見逃したケースはありますか?
.filter(Optional::absent)
「ヌル値」を出すことができます
getOrDefault()
ませんか?
Map<Character, String>
。代替がない場合は、これを使用できますOptional.ofNullable(map.get(c)).orElse(String.valueOf(c))
。また、オプションは、グアバから盗まれたことに注意して、それが非常に良く構文を持っていますOptional.fromNullable(map.get(c)).or(String.valueOf(c));