JavaSE:Java8新特性 - Optional类
1. 基本概念
java.util.Optional类:可以理解为一个简单的容器,其值可能是null或者不是null,代表一个值存在或不存在
该类的引入能很好地解决空指针异常,不用显式进行空值检测
2. 常用方法
static Optional ofNullable (T value) | 根据参数指定数值,来得到Optional类型的对象 |
Optional map (Function<? super T, ? extends U> mapper) | 根据参数制定规则的结果,来得到Optional类型的对象 |
T orElse (T other) | 若该值存在就返回,否则返回other的数值 |
3. 案例题目
判断字符串是否为空,若不为空:打印字符串的个数; 否则:打印0
1 class OptionalTest { 2 3 main () { 4 5 // 1. 处理null (不使用Optional类) 6 7 String str1 = null; 8 9 if ( null ! = str1 ) { 10 11 print("字符串的长度是:" + str1.length() ); 12 13 } else { 14 15 print ("字符串为空,因此长度为0!"); 16 17 } 18 19 20 21 // 2. 处理null (使用Optional类) 22 // <1> 将数据str1 装到Optional 对象代表的容器中 23 Optional<String> optional = Optional.ofNullable(str1); 24 25 26 // <2> 建立映射关系 (使用字符串的长度,与字符串建立映射关系) 27 /* 28 Optional<Integer> integer = optional.map(new Function<String,Integer> () { 29 30 @Override 31 public Integer apply (String s) { 32 33 return s.length(); 34 } 35 }); 36 */ 37 // Optional<Integer> integer = optional.map( s -> s.length() ); 38 Optional<Integer> integer = optional.map(String::length); 39 40 41 // <3> 若字符串不为null,打印字符串的数值; 若字符串为null,则打印0 42 println("integer = " + integer); // Optional.empty 43 println(integer.orElse(0)); // 0 44 45 } 46 47 }