我已经使用Java 8 6个多月了,我对新的API变化非常满意。我仍然不确定的一个方面是什么时候使用Optional
。我似乎在想要在任何地方使用它之间摇摆,有些东西可能是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
有什么好的用途吗?
有我错过的案子吗?