java8新特性之Optional类

  1. Optional类的作用
    java.util.Optional类是一个包含null值的容器对象,可以代替xx!=null使用。更加优雅的进行判空处理。

  2. 常用方法
    2.1 of
    为value创建一个Optional对象,如果value为null,会报出NullOpinterException异常。


    of.png

    2.2 ofNullable
    为value创建一个Optional对象,允许为null。


    ofNullable.png

    2.3 isPresent
    判断当前value是否为null,如果不为null则返回true,否则返回false。


    isPresent.png

    2.4 ifPersent
    如果不为null就执行函数接口中的内容。


    ifPersent.png

    2.5 get
    返回当前值,如果为null则报异常


    get.png

    2.6 orElse
    返回当前值,如果为null则报异常


    orElse.png

    2.7 orElseGet
    和OrElse类型,只是orGetElse支持函数式接口来生成other值
    orElseGet.png

    2.8 orElseThrow
    如果有值则返回,没有值用函数是接口抛出生成的异常


    orElseThrow.png

    2.9 empty
    创建一个空的Optional对象,没有任何参数赋值;


    empty.png
  3. 使用示例

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



©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容