专业的编程技术博客社区

网站首页 > 博客文章 正文

Java Optional类的使用(java options类)

baijin 2024-11-03 12:29:26 博客文章 14 ℃ 0 评论

Optional是一个没有子类的工具类,Optional是一个可以为null的容器对象。它的作用主要就是为了解决避免Null检查,防止NullPointerException。

 // 以前对null的处理方式
 @Test
 public void test01() {
     String userName = "凤姐";
     if (userName != null) {
         System.out.println("姓名为: " + userName);
     } else {
         System.out.println("姓名不存在");
     }
 }

Optional基本使用

 @Test
 public void test02() {
     // 1.创建Optional对象
     // of:只能传入一个具体值,不能传入null
     // ofNullable: 既可以传入具体值,也可以传入null
     // empty: 存入的是null
     Optional<String> op1 = Optional.of("凤姐");;
     Optional<String> op2 = Optional.ofNullable("如花");
     Optional<String> op5 = Optional.ofNullable("如花");
     Optional<Object> op3 = Optional.empty();
 
     // 2.isPresent: 判断Optional中是否有具体值, 有值返回true,没有值返回false
      boolean present = op1.isPresent();
      System.out.println("present = " + present);
 
     // 3.get: 获取Optional中的值,如果有值就返回值具体值,没有值就报错
     //System.out.println(op3.get());
 
     if (op1.isPresent()) {
         System.out.println(op1.get());
     } else {
         System.out.println("没有值");
     }
 }

Optional高级使用

 Optional<String> userNameO = Optional.of("凤姐");
 
 // 存在做的什么
 //ifPresent: 如果有值就调用参数
 userNameO.ifPresent(s -> {
     System.out.println("有值: " + s);
 });

定义一个方法将User中的用户名转成大写并返回

 // 使用传统方式
 public String getUpperUserName1(User u) {
     if (u != null) {
         String userName = u.getUserName();
         if (userName != null) {
             return userName.toUpperCase();
         } else {
             return null;
         }
     } else {
         return null;
     }
 }

使用Optional方式

 public String getUpperUserName2(Optional<User> op) {
     String upperName = op.map(User::getUserName)
             .map(String::toUpperCase)
             .orElse("null");
     return upperName;
 }



本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表