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

  • 相关阅读:
    Windows 10 将MySQL5.5升级为MySQL5.7
    Django Rest Swagger生成api文档
    inception安装使用
    django 日志配置
    构建NTP时间服务器
    django 模型关系
    python 开发环境配置
    mongodb远程备份
    rest framework 尝鲜
    Django Rest Framework-介绍
  • 原文地址:https://www.cnblogs.com/zhangchiblog/p/11722720.html
Copyright © 2011-2022 走看看