zoukankan      html  css  js  c++  java
  • java如何优雅的避免npe判定

    optional小结

    java8使用Optional实现优美的npe判断

    1、optional是那种初始化方法

    //空的optional对象
    Optional<String> empty = Optional.empty();
    //不为null的optional对象 Optional
    <String> str = Optional.of("hello world");
    //可以为null的optional对象 Optional
    <String> nullable = Optional.ofNullable(null);

    2、使用optional.orElse可以实现兜底值

    KeyValue kv = new KeyValue("keyi","hahha");
    Optional<KeyValue> kvOption = Optional.ofNullable(kv);
    Optional<String> key = kvOption.map(KeyValue::getKey);
    System.out.println(key.orElse("123"));

    如果kv == null ---> key.orElse("123") == "123"

    如果kv != null ---> key.orElse("123") == "keyi"

    2.1使用orElseGet接收实现Supplier接口的方法

    KeyValue kv = null;
    Optional<KeyValue> kvOption = Optional.ofNullable(kv);
    Optional<String> key = kvOption.map(KeyValue::getKey);
    System.out.println(key.orElseGet((Supplier) () -> "fuck"));

    这个时候就会输出一个fuck

    2.2使用orElseThrow抛出异常

    KeyValue kv = null;
    Optional<KeyValue> kvOption = Optional.ofNullable(kv);
    Optional<String> key = kvOption.map(KeyValue::getKey);
    System.out.println(key.orElseThrow((Supplier) () -> {
                throw new IllegalArgumentException("KeyValue not null");
            }));

    抛出:

    2.3使用ifPresent,可以接收一个Consumer的接口

    2.4 简化if-else

  • 相关阅读:
    【数学水题】【TOJ4113】【 Determine X】
    【(阶乘的质因数分解)算组合数】【TOJ4111】【Binomial efficient】
    【组合数取模进阶中..】
    【转载】【转自AekdyCoin的组合数取模】
    37.es中批量写入数据
    36.爬取柯林斯字字典
    34.django使用jwt
    33.python中的单例模式
    32.爬虫2
    31.爬虫一
  • 原文地址:https://www.cnblogs.com/zhangchiblog/p/11722720.html
Copyright © 2011-2022 走看看