我試圖執行以下代碼:靜動初始化
public class StaticTest {
private static List<String> dat1;
{
dat1 = new ArrayList<>();
}
private StaticTest(){
System.out.println(dat1.contains("a")); //Marked Line 2: this one is not throwing
}
public static void main(String[] args) {
System.out.println(dat1.contains("a")); //Marked Line 1: This line throws null pointer
new StaticTest();
}
}
我試圖執行上面的代碼,我在1標線得到Null pointer exception
但是當我評論標記爲1號線我得到的輸出。
爲什麼我在第一種情況下得到例外而不是在第二種情況下?
當我使用private static List<String> dat1= new ArrayList<>();
時,不會引發異常。
非常感謝。我在塊之前錯過了「靜態」關鍵字。我測試過了,它按預期工作。 – Kajal
是的,我接受了一個給定的答案.. :) – Kajal