现在已经使用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
in集合有什么好的用处吗?
我错过了任何情况吗?
.filter(Optional::absent)
“
getOrDefault()
吗?
Map<Character, String>
。如果没有替代,我可以使用:Optional.ofNullable(map.get(c)).orElse(String.valueOf(c))
。还要注意,Optional是从Guava那里偷来的,它的语法更好:Optional.fromNullable(map.get(c)).or(String.valueOf(c));