English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

为什么我可以在Java中抛出null,为什么还要将其转换为NullPointerException?

In Java, ogni tipo ha un valore predefinito, quando non inizializzi le variabili di istanza della classe, il compilatore Java utilizza questi valori per inizializzarle al tuo posto. Null è il valore predefinito per i tipi oggetto e puoi anche assegnare manualmente null agli oggetti nei metodi.

Object obj = null;

Ma non è possibile utilizzare un oggetto con valore null o (se viene utilizzato un valore null invece di un oggetto) un oggetto, altrimenti viene generato un NullPointerException.

Esempio

public class Demo {
   String name = "Krishna";
   int age = 25;
   public static void main(String args[]) {
      Demo obj = null;
      System.out.println(obj.age);
      System.out.println(obj.name);
   }
}

Eccezione a runtime

Exception in thread "main" java.lang.NullPointerException
   at july_set3.Demo.main(Demo.java:11)

Generare NullPointerException

È possibile anche utilizzare la parola chiave throw per generare NullPointerException in Java.

Esempio

public class ExceptionExample {
   public static void main(String[] args) {
      System.out.println("Hello");
      NullPointerException nullPointer = new NullPointerException();
      throw nullPointer;
   }
}

Risultato di output

Hello
Exception in thread "main" java.lang.NullPointerException
   at MyPackage.ExceptionExample.main(ExceptionExample.java:6

Lancia un valore nullo

Secondo la documentazione Java, se si tenta di eseguire NullPointerException-

  • Chiamare il metodo a (istanza) con un oggetto null.

  • Accedere, modificare, stampare i campi di un valore nullo (oggetto).

  • Prova ad accedere (stampare/usare in una frase) la lunghezza di un valore nullo.

  • Lanciare un valore nullo.

  • Accedere o modificare un elemento/slot con un valore nullo.

Significa che se si lancia un valore nullo, si verifica un'eccezione di riferimento nullo, non è un'upcasting.

Esempio

public class Demo {
   public static void main(String args[]) {
      throw null;
   }
}

Eccezione a runtime

Exception in thread "main" java.lang.NullPointerException
   at july_set3.Demo.main(Demo.java:5)