避免空指针

避免空指针

空指针案例

Object object = null;String string = object.toString();

1、字符串比较,常量放前面

这个时候 status 可能为 null 造成空指针异常,应该把常量放前面,就能避免空指针异常。

//if(status.equals(SUCCESS)){}
if(SUCCESS.equals(status)){}

2、初始化默认值

User user = new User();String name = StringUtils.EMPTY;

3、返回空集合

在返回一个集合的话,默认会是 null,统一规范返回一个空集合。

public List getUserList(){    List list = userMapper.gerUserList();    return list == null ? new ArrayList() : list;}

4、断言

断言是用来检查程序的安全性的,在使用之前进行检查条件,如果不符合条件就报异常,符合就继续。
Java 中自带的断言关键字:assert,如:

assert name == null : "名称不能为空";

Spring中的用法:

Assert.notNull(name,"名称不能为空");

5、Optional

https://blog.youkuaiyun.com/youanyyou/article/details/78993022

//为value创建一个Optional对象,如果value为空则 会报出NullPointerException异常。
public static <T> Optional<T> of(T value) {
    return new Optional<>(value);
}
//为value创建一个Optional对象,但可以允许value为null值。
public static <T> Optional<T> ofNullable(T value) {
    return value == null ? empty() : of(value);
}

5.1、使用Optional.of()或Optional.ofNullable()来创建Optional对象。
Optional.of()不允许参数为null,Optional.ofNullable()允许参数为null。

public static void main(String[] args) {
   
    Optional<String> optional1 = Optional.of("aaa");
Optional<String> optional2 = Optional.ofNullable(null);
Optional<String> optional3 = Optional.ofNullable("bbb");
}


5.2、isPresent() 方法,结果为boolean类型,true表示参数不为null,false表示参数为null。

boolean isPresent1 = optional1.isPresent();   //isPresent1=true
boolean isPresent2 = optional2.isPresent();   //isPresent2=false

5.3、orElse(value)方法,如果参数不为null,则返回原来的参数;如果参数为null,则返回value。

String orElse1 = optional1.orElse("ccc");    //orElse1="aaa"
String orElse2 = optional2.orElse("ccc");    //orElse2="ccc"
    User user = null;
    User john = new User("john", 18);
    User dick = new User("dick", 12);

    System.out.println(Optional.ofNullable(user).orElse(john));
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值