避免空指针
空指针案例
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));
373

被折叠的 条评论
为什么被折叠?



