如何避免Java中的NullPointerException?

避免NullPointerException

  • NullPointerException是当我们为对象引用分配空值时。

  • 当程序尝试使用保存空值的对象引用时,可能会引发NullPointerException

  • 我们将研究如何避免NullPointerException。有多种方法可以避免此异常:

1)为了避免NullPointerException,我们应该记住一件事,即在使用之前必须使用指定的值初始化所有对象引用。

public void display(String str) {
    if (str.equals("Java")) {
        System.out.println("Java");
    }
}

在上述情况下,如果将参数str作为空值传递,则会发生NullPointerException。可以如下编写相同的方法来避免NullPointerException

public void display(String str) {
    if ("Java".equals(str)) {
        System.out.println("Java");
    }
}

2)我们应该为参数添加一个空检查,并在需要时抛出IllegalArgumentException。

public int CountClassObjects(Object[] count) {

    if (count == null) throw new IllegalArgumentException("No class objects is refernced");

    return count;
}

3)我们应该使用String.valueOf()代替toString()方法。对象obj = null;

//打印null-
System.out.println(String.valueOf(obj));

//该语句将抛出java.lang.NullPointerException-
System.out.println(obj.toString());

示例:引发NullPointerException

public class NullPointerExceptionClass {
    public static void main(String[] args) {
        String str = null;
        System.out.println("Display String length is " + str.length());
        System.out.println("The String representation is " + str.toString());
    }
}

输出结果

D:\Programs>javac NullPointerExceptionClass.java
D:\Programs>java NullPointerExceptionClass

Exception in thread "main" java.lang.NullPointerException
        at Java7.main(Java7.java:4)

示例:取消引发NullPointerException

public class UnRaisingNullPointerClass {
    public static void main(String[] args) {
        String str = null;
        System.out.println("Display String is " + str);
        System.out.println("Display String value is " + str.valueOf(str));
    }
}

输出结果

D:\Programs>javac UnRaisingNullPointerClass.java
D:\Programs>java UnRaisingNullPointerClass

Display String is null
Display String value is null