2008-02-20
More Java Enum fun.
I'd have thought that it'd be reasonably reasonable to expect the following code to compile:
enum Compass
{
North(West), East(North), South(East), West(South);private final Compass clockwise_of;
Compass(Compass clockwise_of)
{
this.clockwise_of = clockwise_of;
}
}
It doesn't; "West" is used before it's declared.
So, how about this?
enum Compass2
{
North(new Object() { Compass2 ref() { return West; } }.ref()), East(North), South(East), West(South);
private final Compass2 clockwise_of;
Compass2(Compass2 clockwise_of)
{
this.clockwise_of = clockwise_of;
}
}
That's fine. Thanks, Java Language Spec!
Now, if only I didn't need four parameters to the constructor...