【发布时间】:2019-06-19 06:11:51
【问题描述】:
我正在学习 Java 中的 Enum 概念,但在练习时遇到了问题。
这里是代码sn-p,
public class MyClass {
private String cardColor = CARDS.SPADE.cardColor; #Causes Null Pointer #Default Value
private MyClass(CARDS card){
this.cardColor = card.cardColor;
}
public static enum CARDS{
SPADE("Black"),
CLUB("Black"),
DIAMOND("Red"),
HEART("Red");
private String cardColor = null;
private MyClass obj = null;
CARDS(String color){
this.cardColor = color;
obj = new MyClass(this); #Trying to create object for MyClass
}
public String getCardColor(){
return this.cardColor;
}
}
public static void main(String args[]) {
System.out.println(CARDS.SPADE);
}
}
我正在尝试在它的构造函数中创建一个私有的 MyClass 对象。这里的值 CARDS.SPADE 为空,我最终得到空指针异常。
如果我不在枚举构造函数中创建对象,一切都会完美,
obj = new MyClass(this);
我不明白为什么没有初始化静态枚举,我对这里的控制流感到困惑。有人可以解释一下这里出了什么问题吗?
【问题讨论】:
-
为什么要在
enum内创建父类的实例?从您发布的内容来看,您似乎更希望将Cards的实例作为MyClass的类属性。你到底想做什么? -
MyClass 有一个私有构造函数,在这里我试图为每个枚举卡设置一个 MyClass 实例。
标签: java enums enumeration