五种常见NullPointerException(空指针)问题所致原因,工作中如何避免?
原因:
- 调用空对象的实例方法
- 访问了空对象的属性
- 当数组是空的时候,取它的长度
- null 作为Throwable的值,抛出
- 方法返回值是null,调用方直接使用
class User{
public String name;
public Integer age;
public String[] adress;
public void print(){
System.out.println("Hello man!");
}
public String getName(){
System.out.println("Name is null!");
return null;
}
public static class NPE extends RuntimeException{ }
}
public class CommonNPE {
public static void main(String[] args) {
User user = null;
// 1. 调用空对象的实例方法
// user.print();
// 2. 访问了空对象的属性
// System.out.println(user.name);
// 3. 当数组是空的时候,取 它的长度
// System.out.println(user.adress.length);
// 4. null 作为Throwable的值,抛出
// User.NPE npe = null;
// throw npe;
// 5. 方法返回值是null,调用方直接使用
user.getName().concat("aa");
}
}
第一种情况:
第二种情况
第三种情况:
第四种情况:
第五种情况:
如何避免?
声明时初始化、使用时校验!如: