2014-04-09 84 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;