java8新特性之Optional类
2022-08-02 本文已影响0人
糯米团子123
-
Optional类的作用
java.util.Optional类是一个包含null值的容器对象,可以代替xx!=null使用。更加优雅的进行判空处理。 -
常用方法
2.1 of
为value创建一个Optional对象,如果value为null,会报出NullOpinterException异常。
of.png2.2 ofNullable
为value创建一个Optional对象,允许为null。
ofNullable.png2.3 isPresent
判断当前value是否为null,如果不为null则返回true,否则返回false。
isPresent.png2.4 ifPersent
如果不为null就执行函数接口中的内容。
ifPersent.png2.5 get
返回当前值,如果为null则报异常
get.png
2.6 orElse
返回当前值,如果为null则报异常
orElse.png
2.7 orElseGet
和OrElse类型,只是orGetElse支持函数式接口来生成other值
orElseGet.png2.8 orElseThrow
如果有值则返回,没有值用函数是接口抛出生成的异常
orElseThrow.png2.9 empty
创建一个空的Optional对象,没有任何参数赋值;
empty.png -
使用示例
Optional<Object> optionalEmpty = Optional.empty(); // 创建一个空的Optional类
String str = "Hello World";
Optional<String> optionalStr = Optional.of(str); // str不能为空
Optional<String> optionalStr = Optional.ofNullable(str); // str可以为空
boolean present = Optional.ofNullable(null).isPresent(); // present为false
Optional.ofNullable("hello").ifPresent(System.out::println); // 输出hello
Optional.ofNullable(null).ifPresent(System.out::println); // 什么也不输出
String str = Optional.ofNullable("hello").get(); // str为hello
Object o = Optional.ofNullable(null).get(); // 抛出异常:java.util.NoSuchElementException: No value present
String s1 = Optional.ofNullable("hello").orElse("string is null"); // s1为hello
Object s2 = Optional.ofNullable(null).orElse("string is null"); // s2为string is null
// 假设有一个User自定义类型:
User user = null;
User ansUser = Optional.ofNullable(user).orElse(new User("张三", 11, "男", 1234)); // 输出为new User("张三", 11, "男", 1234)对象
String s1 = Optional.ofNullable("hello").orElse("string is null"); // s1为hello
Object s2 = Optional.ofNullable(null).orElse("string is null"); // s2为string is null
// 假设有一个User自定义类型:
User user = null;
User ansUser = Optional.ofNullable(user).orElse(new User("张三", 11, "男", 1234)); // 输出为new User("张三", 11, "男", 1234)对象
String str = Optional.ofNullable("hello").orElseGet(() -> "test"); // str为hello
String s = null;
String str = Optional.ofNullable(s).orElseThrow(RuntimeException::new); // 抛出异常:java.lang.RuntimeException