• JavaSE:Java8新特性


    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       }
  • 相关阅读:
    Arthas线上问题排查
    如何快速增加pdf书签,解除pdf限制
    数组指针——指向数组的指针(通过指针控制数组)
    指针和数组直接对应关系之如何记忆
    C/C++语言中指针数组和数组指针比较区别
    int最大值+1为什么是-2147483648最小值-1为什么是2147483647
    电脑进行二进制加减运算方法
    C/C++语言中的函数参数传参三种对比
    Python基于VS2013 开发环境搭建 Hello World 10分钟搞定
    算法的复杂度包括时间复杂度和空间复杂度分别如何计算?
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/14949899.html
Copyright © 2020-2023  润新知