2014-04-09 85 views
1

任何人都可以解釋爲什麼枚舉NullPointerException異常

public class Testabut{ 
    enum ThreeColors{RED, BLUE, green; 
     public void woowoo(){ 
     System.out.println("woo");} 
    } 
    ThreeColors color; 



    class Innerclass{ 
     Innerclass(){ 
      color.woowoo(); 
     } 
    } 

在woowoo的調用生成一個空指針異常()? 顏色的實例應該可到達,否?

回答

5

因爲color未初始化,所以默認值爲null
初始化它像

ThreeColors color = ThreeColors.RED; //Or any other value 
4

color變量爲空。你必須初始化它才能使用它。

0

您不初始化color變量。這個(或任何顏色,您喜歡)

0

變化:

ThreeColors color = ThreeColors.RED; 
1

顏色的實例應該到達,不是嗎?

沒有實例,color默認爲null,因爲它沒有初始化。

1

所有的實例變量都用一個值初始化。如果您沒有提供值,則會爲該變量分配默認的值。對於非原始類型,默認值爲null

目前,你的代碼就相當於:

ThreeColors color = null; 

所以當你使用它,當然你會得到一個NPE。相反,請嘗試如下所示:

ThreeColors color = ThreeColors.RED; 
1

您必須初始化color。嘗試color = ThreeColors.RED;color = ThreeColors.BLUE;color = ThreeColors.green;