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       }

 

posted @ 2021-06-29 14:33  Jasper2003  阅读(51)  评论(0编辑  收藏  举报