M
Marco Plaß
Gast
Hallo Forum,
zwecks intelligentem Zugriff auf Konstanten über einen Ordinaltyp gefallen mir enums sehr gut. Aber: ich bekomme keine Verschachtelung zustande. Am Besten lässt sich das an einem Beispiel erläutern.
Spannend wird die Sache beim Aufruf des Konstruktors aus den drei Aufzählungen in OuterEnum (Zeile 24). Es soll eine spezielle enum als Parameter in den Konstruktor übergeben werden. Das Problem dabei ist, dass InnerEnum leider nicht statisch ist sondern nur seine Aufzählungen. Der Versuch, es statisch über
machen scheitert daran, dass myinner bei STAGE_1 noch nicht existiert (m.E.).
Nun stehe ich ziemlich ratlos da. Hat jemand schon mal dieses Problem gelöst? Bin für alle Ratschläge dankbar.
Marco
zwecks intelligentem Zugriff auf Konstanten über einen Ordinaltyp gefallen mir enums sehr gut. Aber: ich bekomme keine Verschachtelung zustande. Am Besten lässt sich das an einem Beispiel erläutern.
Code:
public enum InnerEnum
{
UNDEFINED (-1, "Undefiniert"),
STAGE_1 ( 1, "first inner stage"),
STAGE_2 ( 2, "second inner stage");
private final Integer id;
private final String longName;
InnerEnum (Integer id, String longName)
{
this.id = id;
this.longName = longName;
}
@Override
public String toString()
{
return "Stage: " + this.longName;
}
}
public enum OuterEnum
{
UNDEFINED (-1, "Undefiniert", null),
STAGE_1 ( 1, "first outer stage", InnerEnum),
STAGE_2 ( 2, "second outer stage", null);
private final Integer id;
private final String longName;
private final InnerEnum innerenum;
OuterEnum (Integer id, String longName, InnerEnum innerenum)
{
this.id = id;
this.longName = longName;
this.innerenum = innerenum;
}
@Override
public String toString()
{
return "Stage: " + this.longName;
}
}
public class MainClass
{
public static void main(String[] args)
{
OuterEnum outstage = OuterEnum.STAGE_1;
System.out.println(outstage.toString());
}
}
Spannend wird die Sache beim Aufruf des Konstruktors aus den drei Aufzählungen in OuterEnum (Zeile 24). Es soll eine spezielle enum als Parameter in den Konstruktor übergeben werden. Das Problem dabei ist, dass InnerEnum leider nicht statisch ist sondern nur seine Aufzählungen. Der Versuch, es statisch über
Code:
STAGE_1 ( 1, "first outer stage", myinner),
...
static
{
InnerEnum myinner;
}
machen scheitert daran, dass myinner bei STAGE_1 noch nicht existiert (m.E.).
Nun stehe ich ziemlich ratlos da. Hat jemand schon mal dieses Problem gelöst? Bin für alle Ratschläge dankbar.
Marco