java 新特性简化代码Optional方法详细讲解【干货】

简介: java 新特性简化代码Optional方法详细讲解【干货】

Optional


1、实体类

/** 
 * 对象
 * User(id=null, name=null, age=null, address=null)
 * Address(x=null, y=null, location=null)
*/

2、ifPresent

/**
 * 如果user不为空则获取Address对象,过滤location属性空值,如果有值则打印user对象
 */
Optional.ofNullable(user)
    .map(User::getAddress)
    .filter(entity->entity.getLocation()!=null)
    .ifPresent(consumer->{
      System.out.println(user);
  });
Address address2= new Address();
address2.setLocation("上海");

3、orElse

/**
 * 如果entity里面的getLocation不为空则取entity对象值,否则取address2对象  不管有没有值orElse都会执行
 */
Address address11 = Optional.ofNullable(user)
          .map(User::getAddress)
          .filter(entity -> entity.getLocation() != null)
          .orElse(address2);

4、orElseThrow

/**
 *  如果entity里面的getLocation不为空则取entity对象值,否则取抛出异常
 */
Address address22 = Optional.ofNullable(user)
          .map(User::getAddress)
          .filter(entity -> entity.getLocation() != null)
          .orElseThrow(()->new RuntimeException("错误"));

5、orElseGet

/**
 * 如果entity里面的getLocation不为空则取entity对象值,否则取address2对象  与orElse的区别就是orElseGet在没有值的情况下才会执行,有值则不执行orElseGet
 */
Address address33 = Optional.ofNullable(user)
          .map(User::getAddress)
          .filter(entity -> entity.getLocation() != null)
          .orElseGet(()->new Address());
相关文章
|
3月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
394 5
|
3月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
287 18
|
3月前
|
Java 数据处理 API
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
274 115
|
3月前
|
安全 Java 编译器
为什么你的Java代码需要泛型?类型安全的艺术
为什么你的Java代码需要泛型?类型安全的艺术
197 98
|
3月前
|
Java 编译器 API
java最新版和java8的区别,用代码展示
java最新版和java8的区别,用代码展示
315 43
|
3月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
231 4
|
3月前
|
安全 Java 容器
告别空指针噩梦:Optional让Java代码更优雅
告别空指针噩梦:Optional让Java代码更优雅
399 94
|
3月前
|
安全 Java 容器
告别繁琐判空:Optional让你的Java代码更优雅
告别繁琐判空:Optional让你的Java代码更优雅
|
3月前
|
安全 Java 开发者
告别NullPointerException:掌握Java Optional的精髓
告别NullPointerException:掌握Java Optional的精髓
|
3月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
326 5