java判空和防空操作合集

​1、对象判空

  Objects.isNull(object);//对象判空
  Object object=null;
  System.out.println(Objects.isNull(object));
  //true
  //import java.util.Objects;
   
  //不为空
  Objects.nonNull(str);

2、String判空

 //第一种guava的Strings判空
 Strings.isNullOrEmpty(name);//字符串判空,是否为 null,是否为 “”
 String str="";
 boolean rs=Strings.isNullOrEmpty(str);
 //true
 System.out.println(rs);
 str=" ";
 //false
 System.out.println(rs);
 
 //第一种String不为空
 String str=" ";
 boolean rs= StringUtils.isNotEmpty(str);
 //不为空
 System.out.println(rs);
 
 
 需要引入谷歌guava的maven
          <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>22.0</version>
        </dependency>
 
 
 //第二种,commons-lang3的判空
 import org.apache.commons.lang3.StringUtils;
 rs=StringUtils.isBlank(str);
 //true
 System.out.println(rs);
 StringUtils的isBlank()方法可以一次性校验这三种情况,是否为null,是否为"",是否为空字符串(引号中间有空格) 如:" "。制表符、换行符、换页符和回车,返回值都是true,否则为false。
 
 //第二种,判不为空
 String str=" ";
 rs=StringUtils.isNotEmpty(str);
 System.out.println(rs);
 
 
 需要引入lang3的maven
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>

3、集合判空

1、判断集合是否为空:
  import org.apache.commons.collections4.CollectionUtils;
 
  CollectionUtils.isEmpty(null): true
  CollectionUtils.isEmpty(new ArrayList()): true  
  CollectionUtils.isEmpty({a,b}): false
  //不为空
  rs=CollectionUtils.isNotEmpty(myList);
  System.out.println(rs);
 
 2、判断Map是否为空
 MapUtils.isNotEmpty
    boolean rs=true;
    Map myMap= Maps.newHashMap();
    rs= MapUtils.isEmpty(myMap);
    System.out.println(rs);
    rs= MapUtils.isNotEmpty(myMap);
    System.out.println(rs);
     
 需要引入的maven
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.2</version>
        </dependency>
         
 3、spring的集合判空
 import org.springframework.util.CollectionUtils;
      CollectionUtils.isEmpty(nameMap);//map判空
      CollectionUtils.isEmpty(nameList);//list判空
 需要引入的maven包
 
 <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.7.RELEASE</version>
 </dependency>

4、java8的一些防空优化

 // 等同于条件运算符的效果:Objects.isNull(value) ? "" : value;
 String value = map.getOrDefault("支付","");
 
 // Apache MapUtils,如果版本低于1.8
 String value = MapUtils.getString(map, "支付", "");
 
 Map<String,List<String>> myMap= Maps.newHashMap();
 //Absent缺席,不存在
 myMap.computeIfAbsent("java框架", key -> new ArrayList<>()).add("Spring");
 myMap.putIfAbsent("java基础",new ArrayList<String>()).add("sss");
 //这是错误的,当 Map 中 key 对应 value 不存在的时候,putIfAbsent将会直接返回 null。
 //而 computeIfAbsent将会返回 mappingFunction计算之后的值,像上面的场景直接返回就是 new ArrayList。
 //这一点需要注意一下,切勿用错方法,导致空指针。

5、Optional的一些防空优化

User user = null;
 System.out.println(Optional.ofNullable(user).map(u -> u.getName()).orElse("Unknown"));
    //Present 现在,存在
    // 传入正常值,正常返回一个 Optional 对象
    Optional<String> optional1 = Optional.ofNullable("java");
    // 传入 null 参数,正常返回 Optional 对象,运行代码,可以观察到正常传入值和传入 null 值时,都没有抛出异常。
    Optional optional2 = Optional.ofNullable(null);
    //NPE异常
    //Optional optional3 = Optional.of(null);
 
 
    //设置默认值
    Optional<String> optional=Optional.ofNullable(null);
    String object = optional.orElse("默认值");
    System.out.println(object);
     
     
      Optional optional=Optional.ofNullable(null);
    //Java常用函数式接口之Supplier接口
    Object object2 = optional.orElseGet(()->{
      return "hello";
    });
    System.out.println(object2);
     
     

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值