Java报错”java.lang.NullPointerException”的原因以及解决办法

  • Post category:Java

Java中的”java.lang.NullPointerException”错误表示程序尝试使用一个空对象或对一个未经初始化的对象进行操作。下面先从原因讲起,再给出解决办法以及两条示例说明。

原因

  1. 对一个值为null的对象进行方法调用或属性访问。
  2. 未初始化的变量或数组调用。
  3. 未初始化的Integer类型变量作为参数传递给方法。

解决办法

根据上述原因,处理java.lang.NullPointerException错误,我们可以:

  1. 对可能是null的对象进行null判断后再进行方法调用或属性访问,例如:
if (object != null) {
    object.doSomething();
}

当然,从Java 8开始,我们也可以使用Optional类来避免NullPointerException。例如:

Optional<Object> optional = Optional.ofNullable(object);
optional.ifPresent(Object::doSomething);
  1. 在声明变量时对其进行初始化,例如:
Object object = new Object();
  1. 确保方法调用参数不为空值,例如:
public void doSomething(Object object) {
    if (object != null) {
        // do something
    }
}

示例说明

示例一

在下面的代码中,我们尝试使用未初始化的变量”str”进行字符串拼接操作:

String str;
String result = "Hello," + str;

这个代码会抛出java.lang.NullPointerException错误。我们可以通过初始化”str”变量或者对其进行null判断来解决此问题。例如:

String str = "World";
String result = "Hello," + str;

或者:

String str = null;
if (str != null) {
    String result = "Hello," + str;
}

示例二

在下面的代码中,我们尝试使用null值作为参数调用了一个方法:

public void doSomething(Integer num) {
    // do something
}

Integer num = null;
doSomething(num);

这个代码会抛出java.lang.NullPointerException错误。我们可以通过对参数进行null判断来解决此问题。例如:

public void doSomething(Integer num) {
    if (num != null) {
        // do something
    }
}

Integer num = null;
if (num != null) {
    doSomething(num);
}