Eng.Fouad provides one way.
Another way to facilitate the creation of a more complex enumeration similar to this:
enum Facing { North { Facing right() { return East; } Facing left() { return West; } }, East { Facing right() { return South; } Facing left() { return North; } }, South { Facing right() { return West; } Facing left() { return East; } }, West { Facing right() { return North; } Facing left() { return South; } }; abstract Facing right(); abstract Facing left(); }
This design also allows easy chaining so you can write a general inverse procedure like this:
Facing reverse(Facing facing) { return facing.right().right(); }
source share