Ich entwickle einen LALG-Compiler zu meinem College-Kurs auf Java 1.6. Also habe ich eine Klassen- und Grammatikklasse gemacht.Enum von Enum ist NULL
EnumTypes
public enum EnumTypes {
A("OLA"),
B("MUNDO"),
C("HELLO"),
D("WORLD"),
/**
* The order below is reversed on purpose.
* Revert it and will you get a NULL list of types furder.
*/
I(EnumGrammar.THREE),
H(EnumGrammar.TWO),
F(EnumGrammar.ONE),
E(EnumGrammar.ZERO);
private String strValue;
private EnumGrammar enumGrammarValue;
private EnumTypes(String strValue) {
this.strValue = strValue;
}
private EnumTypes(EnumGrammar enumGrammarValue) {
this.enumGrammarValue = enumGrammarValue;
}
public String getStrValue() {
return strValue;
}
public EnumGrammar getEnumTiposValue() {
return enumGrammarValue;
}
}
EnumGrammar
public enum EnumGrammar {
ZERO(EnumTypes.A,EnumTypes.B,EnumTypes.F,EnumTypes.D),
ONE(EnumTypes.C),
TWO(EnumTypes.B,EnumTypes.H),
THREE(EnumTypes.D,EnumTypes.A,EnumTypes.C);
private EnumTypes[] values;
private EnumGrammar(EnumTypes ... values) {
this.values = values;
}
public EnumTypes[] getValues() {
return values;
}
}
Als ich EnumTypes.E.getEnumTiposValue().getValues()
nennen, wo angeblich der EnumTypes.F
Wert sein, ist NULL.
Haupt
public class Main {
public static void main(String[] args) {
//prints [A, B, null, D]
System.out.println(Arrays.toString(EnumTypes.E.getEnumTiposValue().getValues()));
}
}
Es gibt eine Abhilfe oder so etwas?
Danke!
+1 und Reproduktion ist hier: http://ideone.com/O9bZx3 –
Sieht aus wie ein Puzzle zirkuläre Abhängigkeit zu dem im Zusammenhang static init der Konstanten der beiden enum-Klassen, die sich gegenseitig referenzieren. –
Dies kann manchmal unabhängig von der zirkulären Abhängigkeit passieren, insbesondere wenn Sie etwas lahm legen oder einen seltsamen Klassenlader verwenden. –