作为一个特性,我觉得最重要就是弄清楚它的用处,以后再需要的时候可以即使想起。
像try后面的(),optional也可以被认为是一个语法糖。
其作用:主要在于可以包含或不可以包含非空值
解决的问题是: java中非常讨厌的一点就是nullpoint,碰到空指针就会出错抛Exception,然后需要逐行检查是哪个对象为空,带来大量的不必要精力损耗,抛出NPE错误不是用户操作的错误,而是开发人员的错误,应该被避免,那么只能在每个方法中加入非空检查,阅读性和维护性都比较差。
用法
Optional<SomeType> getSomeValue() {
// 返回一个空的Optional类型;
return Optional.empty();
}
Optional<SomeType> getSomeValue() {
SomeType value = ...;
// 使用这个方法,值不可以为空,否则抛exception
return Optional.of(value);
}
Optional<SomeType> getSomeValue() {
SomeType value = ...;
// 使用这个方法,值可以为空,如果为空返回Optional.empty
return Optional.ofNullable(value);
// usage
Optional<SomeType> someType = getSomeValue();
参考链接:(https://www.jdon.com/idea/java/using-optional-effectively-in-java-8.html)