java.util.Optional类
1.理解:为了解决java中的空指针问题而生!
Optional 类(java.util.Optional) 是一个容器类,它可以保存类型T的值,代表这个值存在。或者仅仅保存null,表示这个值不存在。原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。
2.常用方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| @Test public void test1(){ Optional<Object> op1 = Optional.empty(); if(!op1.isPresent()){ System.out.println("数据为空");
} System.out.println(op1); System.out.println(op1.isPresent());
}
@Test public void test2(){ String str = "hello";
Optional<String> op1 = Optional.of(str); String str1 = op1.get(); System.out.println(str1);
}
@Test public void test3(){ String str = "beijing"; str = null; Optional<String> op1 = Optional.ofNullable(str); String str2 = op1.orElse("shanghai");
System.out.println(str2);
}
|
3.典型练习
能保证如下的方法执行中不会出现空指针的异常。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public String getGirlName2(Boy boy){
Optional<Boy> boyOptional = Optional.ofNullable(boy); Boy boy1 = boyOptional.orElse(new Boy(new Girl("迪丽热巴")));
Girl girl = boy1.getGirl();
Optional<Girl> girlOptional = Optional.ofNullable(girl); Girl girl1 = girlOptional.orElse(new Girl("古力娜扎"));
return girl1.getName(); }
@Test public void test5(){ Boy boy = null; boy = new Boy(); boy = new Boy(new Girl("林志玲")); String girlName = getGirlName2(boy); System.out.println(girlName);
}
|