Java 8新特性之Optional随笔
来源:互联网 发布:企业级sas软件多少钱 编辑:程序博客网 时间:2024/05/29 19:05
说实话,一开始看见java 8 的新特性的时候我没有关注到Optional这个类的使用,因为我用了一下觉得不怎么方便,但是在后面想起来有这个类的时候,我觉得它帮了我很多,于是就又认真的去看了一下它的API,觉得这个还是不错的一个容器对象类来的。
但是我们在什么时候去使用这个新的类呢?
那么我就来看看我们现在是怎么写的当String类型的值为null的时候,我们一般是怎么做的,很简单:
我们先来定义一个String类型的变量
String str = “hello”;
If(str==null){
System.out.println(“参数为空”);//或者是打印日志什么的
}else{
//执行我们的步骤
}
一开始的时候,我总是会忘记要判断传过来的参数是否为空,在这里也说一下:参数也早判断为空越好,这样我们就可以越早的解决问题。
然后我们来看看使用Optional容器包装类来处理这个问题,(在理解这个的时候,我觉得最好不要翻译,就直接的理解成Optional容器包装类,会好一点)
String str = “Hello”;
Optional<String> name =Optional.ofNullAble(str);
If(name.isPresent){
System.out.print(name.get());
} else{
System.out.println(“参数为空”);
}
看到这有人可能会说,这不是添加了很多行代码吗?那里看得出来提高效率了。是的,代码确实是多了很多,但是我们的可操作行也就提高了。为什么这么说呢?
我们来看看Optional的API函数先:
(1) of:创建一个不能为null的Optional对象
(2) ofNullAble:跟上面的一样的功能,唯一的区别就是可以为空
(3) isPresent():判断Optioanl包装的内容是否有值,有返回true,没有false
(4) ifPresent():一样的功能,相当于上面的添加了if判断语句,这个可以结合map来Lambda使用
(5) get:得到Optional里面包装的对象
(6) orElse:如果Optional里面的值不为null,则返回,不然返回我们自己定义的值
(7) orElseGet:orElse方法将传入的字符串作为默认值,orElseGet方法可以接受Supplier接口的实现用来生成默认值。
(8) orElseThrow:如果有值则将其返回,否则抛出supplier接口创建的异常
对于这个Optioanl包装容器类,我觉得了解这些就可以了,在开发中,如果不熟悉Lambda表达式的话,就多些使用of,ofNullAble,isPresent,如果还涉及到修改值内容,或者过滤等功能那个的话,就使用ifPresent这些,下面再看看一个例子把:
public class test { public static void main(String[] args){ String user = "boy"; Optional<String> name = Optional.ofNullable(user);// if(name.isPresent()){// System.out.println(name.get());// }else{// System.out.println("name is null");// } name.ifPresent(x-> System.out.println("name is"+name.get())); System.out.println(name.orElse("hello world")); System.out.println(name.orElseGet(()->"good morning")); name.orElseThrow(()->ValueNotExistException::new); }}好了,这个就介绍到这里,如果觉得复杂的话也可以不使用这个,不过我觉得这个还是挺好用的额。
- Java 8新特性之Optional随笔
- W3Cschool Java 8新特性----> Optional 类
- JDK8新特性之Optional
- Java 8 新特性:Java 类库的新特性之 Optional类 ——诺诺"涂鸦"记忆
- Java 8 新特性001_Java 8 Optional 类
- Java8 新特性之 Optional 类
- Java8新特性之Optional详解
- Java 8 新特性汇总随笔
- JDK1.8新特性值Optional
- java8新特性--optional
- Java 8之Optional
- C#4.0新特性之二:Named and Optional Parameters
- Java8新特性 - Optional类
- JDK8新特性Optional 类
- Java8新特性 - Optional类
- JDK8新特性Optional类
- java8新特性---Optional类
- java8新特性(八):Optional
- 设计模式六大原则之--依赖倒置原则(DIP)
- 自动扫描工具:Metasploit's Wmap
- Error:warning: Ignoring InnerClasses attribute for an anonymous inner class 错误怎么解决
- 解决外网向内网通信方案--NAT穿透技术详解
- Spring mvc 参数解析
- Java 8新特性之Optional随笔
- opencv小试牛刀
- codeforces 748B(水) ACM出线之路
- 使用Android Studio出现的一些问题解决策略
- RecyclerView
- WebService注解
- php 调用ffmpeg获取视频信息
- C# List数据批量更新
- 一点一滴学习Spring(八)之Spring数据源配置