有人可以解释原因吗
public class Testabut{
enum ThreeColors{RED, BLUE, green;
public void woowoo(){
System.out.println("woo");}
}
ThreeColors color;
class Innerclass{
Innerclass(){
color.woowoo();
}
}
在调用woowoo()时生成空指针异常? 颜色的实例应该可以到达,不是吗?
答案 0 :(得分:5)
因为color
未初始化且默认值为null
像
ThreeColors color = ThreeColors.RED; //Or any other value
答案 1 :(得分:4)
您的color
变量为空。你必须初始化它才能使用它。
答案 2 :(得分:1)
颜色的实例应该可以到达,不是吗?
没有实例,color
默认为null
,因为它未初始化。
答案 3 :(得分:1)
所有实例变量都使用值初始化。如果您未提供值,则会为该变量分配该类型的默认值。对于非基本类型,默认值为null
。
目前,您的代码相当于:
ThreeColors color = null;
所以当你使用它时,你当然会得到一个NPE。相反,尝试这样的事情:
ThreeColors color = ThreeColors.RED;
答案 4 :(得分:1)
您必须初始化color
。试试color = ThreeColors.RED;
或color = ThreeColors.BLUE;
或color = ThreeColors.green;
!
答案 5 :(得分:0)
您没有初始化color
变量。
答案 6 :(得分:0)
更改为此(或您喜欢的颜色):
ThreeColors color = ThreeColors.RED;