zoukankan      html  css  js  c++  java
  • java.util.Optional

     1 public class OptionalDemo {
     2  
     3   public static void main(String[] args) {
     4     //创建Optional实例,也可以通过方法返回值得到。
     5     Optional<String> name = Optional.of("Sanaulla");
     6  
     7     //创建没有值的Optional实例,例如值为'null'
     8     Optional empty = Optional.ofNullable(null);
     9  
    10     //isPresent方法用来检查Optional实例是否有值。
    11     if (name.isPresent()) {
    12       //调用get()返回Optional值。
    13       System.out.println(name.get());
    14     }
    15  
    16     try {
    17       //在Optional实例上调用get()抛出NoSuchElementException。
    18       System.out.println(empty.get());
    19     } catch (NoSuchElementException ex) {
    20       System.out.println(ex.getMessage());
    21     }
    22  
    23     //ifPresent方法接受lambda表达式参数。
    24     //如果Optional值不为空,lambda表达式会处理并在其上执行操作。
    25     name.ifPresent((value) -> {
    26       System.out.println("The length of the value is: " + value.length());
    27     });
    28  
    29     //如果有值orElse方法会返回Optional实例,否则返回传入的错误信息。
    30     System.out.println(empty.orElse("There is no value present!"));
    31     System.out.println(name.orElse("There is some value!"));
    32  
    33     //orElseGet与orElse类似,区别在于传入的默认值。
    34     //orElseGet接受lambda表达式生成默认值。
    35     System.out.println(empty.orElseGet(() -> "Default Value"));
    36     System.out.println(name.orElseGet(() -> "Default Value"));
    37  
    38     try {
    39       //orElseThrow与orElse方法类似,区别在于返回值。
    40       //orElseThrow抛出由传入的lambda表达式/方法生成异常。
    41       empty.orElseThrow(ValueAbsentException::new);
    42     } catch (Throwable ex) {
    43       System.out.println(ex.getMessage());
    44     }
    45  
    46     //map方法通过传入的lambda表达式修改Optonal实例默认值。 
    47     //lambda表达式返回值会包装为Optional实例。
    48     Optional<String> upperName = name.map((value) -> value.toUpperCase());
    49     System.out.println(upperName.orElse("No value found"));
    50  
    51     //flatMap与map(Funtion)非常相似,区别在于lambda表达式的返回值。
    52     //map方法的lambda表达式返回值可以是任何类型,但是返回值会包装成Optional实例。
    53     //但是flatMap方法的lambda返回值总是Optional类型。
    54     upperName = name.flatMap((value) -> Optional.of(value.toUpperCase()));
    55     System.out.println(upperName.orElse("No value found"));
    56  
    57     //filter方法检查Optiona值是否满足给定条件。
    58     //如果满足返回Optional实例值,否则返回空Optional。
    59     Optional<String> longName = name.filter((value) -> value.length() > 6);
    60     System.out.println(longName.orElse("The name is less than 6 characters"));
    61  
    62     //另一个示例,Optional值不满足给定条件。
    63     Optional<String> anotherName = Optional.of("Sana");
    64     Optional<String> shortName = anotherName.filter((value) -> value.length() > 6);
    65     System.out.println(shortName.orElse("The name is less than 6 characters"));
    66  
    67   }
    68  
    69 }
    Sanaulla
    No value present
    The length of the value is: 8
    There is no value present!
    Sanaulla
    Default Value
    Sanaulla
    No value present in the Optional instance
    SANAULLA
    SANAULLA
    Sanaulla
    The name is less than 6 characters
    原文链接: javacodegeeks 翻译: ImportNew.com - 高俊阳
    译文链接: http://www.importnew.com/6675.html
  • 相关阅读:
    员工管理,这么做就对了
    学会自我管理的好处及自我管理包括的内容
    职场人必看的5本书推荐,首推《情商必读12篇》
    企业管理方面的经典著作推荐
    这6本精心挑选的团队管理类好书助你做好团队管理
    战略规划,你的企业真的做对了吗?
    如何提高说服力?说服的技巧有哪些?这本书能给你答案
    读书使人进步,这本营销书籍让你真正读懂市场营销
    P1228 地毯填补问题题解
    P1010 幂次方题解
  • 原文地址:https://www.cnblogs.com/abcdefghijklmnopqrstuvwxyz/p/8405336.html
Copyright © 2011-2022 走看看