@Data
public class Employee {
private String name;
} @Data
public class Company { private String name; private List<Employee> employees;
} /**
* optional接口, optional的使用都是基于函数式的用法, 不写if-else判断
* optional 无法序列化, 不要将她作为方法参数 或 类的成员变量, 只用在方法的返回值上,
* 用来规避空指针异常
*/
public class OptionalTest { @Test
public void test() {
Optional<String> optional = Optional.of("hello");
// 无用的使用方式
if (optional.isPresent()) {
System.out.println(optional.get());
} // 推荐的使用方式
optional.ifPresent(item -> System.out.println(item));
} @Test
public void test2() {
Optional<String> optional = Optional.empty();
// 推荐的使用方式, 没有值将不执行传入的方法
optional.ifPresent(item -> System.out.println(item));
System.out.println("---------------------------------"); System.out.println(optional.orElse("world"));
System.out.println("---------------------------------"); System.out.println(optional.orElseGet(() -> "nihao"));
System.out.println("---------------------------------"); } @Test
public void Test3() {
Employee employee = new Employee();
employee.setName("zhangsan"); Employee employee2 = new Employee();
employee2.setName("lisi"); Company company = new Company();
company.setName("company"); List<Employee> employees = Arrays.asList(employee, employee2);
company.setEmployees(employees); List<Employee> list = company.getEmployees(); // 传统手工艺做法:
/*
if (null != list) {
return list;
} else {
return new ArrayList<Employee>();
}
*/
// 崭新的函数式风格
Optional<Company> optional = Optional.ofNullable(company);
System.out.println(
optional.map(c -> c.getEmployees()).orElse(Collections.emptyList())
);
}
}

最新文章

  1. dubox首次调用消费者执行两次问题
  2. java-final关键字
  3. CentOS中的常用命令
  4. ORM框架Entity Framework
  5. php Calender(日历)代码
  6. 简单的信誉算法 js处理
  7. java基础加强
  8. MyDatePicker拆分日期显示到不同TextBox
  9. JAVA 23种开发模式详解(代码举例)
  10. BZOJ第7页养成计划
  11. 键盘keyCode值
  12. 排序算法--冒泡排序(Bubble Sort)_C#程序实现
  13. 3.Solr4.10.3目录结构
  14. 【Spring环境搭建】在Myeclipse下搭建Spring环境-web开发
  15. ARM 中必须明白的几个概念
  16. guava学习:guava集合类型-table
  17. High School: Become Human(数学思维)
  18. react路由配置(未完)
  19. 【Python3 爬虫】07_正则表达式(原子)
  20. HihoCoder1653 : 公平分队([Offer收割]编程练习赛39)(贪心)

热门文章

  1. codevs 1255 搭积木 x
  2. 官方转译:截止2018-12-10,chromedriver与chrome对应关系表
  3. (转载)FM 算法
  4. PHP通用后台管理系统发布!
  5. 【机器学习速成宝典】模型篇05朴素贝叶斯【Naive Bayes】(Python版)
  6. leetcode 239. 滑动窗口最大值(python)
  7. JS数组方法的的返回值和是否改变该数组总结
  8. 【1】mongoDB 的安装及启动
  9. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_04.mybatis概述
  10. 测开之路一百四十八:WTForms表单验证