各位开发小伙伴相信对NullPointerException并不陌生了,这应该是我们见过最多的报错了,下面我们就来说说一些常见的场景并怎么防止空指针的发生。
String发生空指针
当我们使用一个null去调用string的方法时,自然会报空指针,比如:
String a = "1";
String b = null;
System.out.println(a.equals(b));
System.out.println(b.equals(a));
当我们使用"1".equals(null)时,不会出现空指针的情况,但是当null.equals(“1”)时,就会出现空指针,此时就是使用一个null去调用string的方法。
解决方法
1.当我们使用string方法并不能保证此对象非null的情况下,我们需要进行非空判断,可以使用StringUtils.isNotBlank()或StringUtils.isNotEmpty()进行判断。
注:isNotBlank会将空字符过滤,如果字符串中都是空字符则此结果为false。
2.可以使用一些工具类进行处理,如进行equals比较时可以使用Objects.equals()
进行比较
通过源码可以看出,在工具类内已经帮我们做好了非空判断
3.使用Optional.ofNullable()控制可能为空的对象,将此对象重新实例化。
List发生空指针
list常见发生空指针的情况与string类似,用一个空对象去调用方法如:
List<String> list = null;
list.add("1");
同样是使用了null去调用方法,此时也会出现空指针的异常
解决方法
1.当我们不能保证list对象为非null的情况,可以使用CollectionUtils.isNotEmpty()来进行非空判断,用法与StringUtils.isNotBlank()类似。
2.使用Optional.ofNullable()控制可能为空的对象,将此对象重新实例化。