Java 8 如何正确使用 Optional

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils; import java.util.Optional; @Data
@EqualsAndHashCode(exclude={"self"})
@ToString(callSuper=true, exclude="self")
public class PersonDto {
private Integer id;
private String name;
private String password; private Double self; public boolean validateName1() {
return StringUtils.equals("hjz", name);
} public static boolean validateName2(String name) {
return StringUtils.equals("hjz", name);
} public static void main(String[] args) {
PersonDto personDto = new PersonDto();
personDto.setName("hjz");
// String name = Optional.ofNullable(personDto)
// .map(obj -> obj.getName())
// .filter(StringUtils::isNotEmpty)
// .orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available.")); // String name = Optional.ofNullable(personDto)
// .map(obj -> obj.getName())
// .filter(PersonDto::validateName2)
// .orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available.")); String name = Optional.ofNullable(personDto)
.filter(PersonDto::validateName1)
.map(obj -> obj.getName())
.orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available."));
System.out.println(name);
}
}

最新文章

  1. 为IIS站点添加限制IP
  2. Oracle 11g 在备份导出时缺少表的问题
  3. Threading in C#
  4. sublime Text2.0.2注册码
  5. (hdu)1285 确定比赛名次
  6. 【pyhton】短路逻辑
  7. Android ListView+image的使用
  8. 重新开始学习javase_类再生(类的合成和继承)
  9. A题
  10. 章节2:SQL之多表连接
  11. 如何写好一个UITableView(完整版)
  12. 痞子衡嵌入式:备受开源社区推崇的分布式版本控制工具(Git)
  13. SpringMVC-DispatcherServlet配置(Spring-servlet.xml)
  14. ES6 WeakMap和WeakSet的使用场景
  15. 每日scrum(6)
  16. NOIP2018 货币系统
  17. 【开发】MFC到Delphi的皮肤移植
  18. Oracle+Mybatis批量插入,更新和删除
  19. BZOJ 1941: [Sdoi2010]Hide and Seek(k-d Tree)
  20. Linux的防火墙–Iptables

热门文章

  1. strstr函数字符串匹配问题
  2. 第一次安卓android studio安装,常见问题。
  3. Linux定时任务调度
  4. 允许远程用户登录访问mysql的方法
  5. 【转】PyDev Eclipse使用技巧说明
  6. V4L2应用程序框架【转】
  7. ES系列十四、ES聚合分析(聚合分析简介、指标聚合、桶聚合)
  8. DES加密模式详解
  9. Linux学习之CentOS(十二)--crontab命令的使用方法
  10. Jquery hover方法使用及 mouseenter与mouseleave和 mouseover与mouseout的区别