Java - Creating an array of methods
Whenever you think of pointer-to-function, you translate to Java by using the Adapter pattern (or a variation). It would be something like this:
public class Node { ... public void goNorth() { ... } public void goSouth() { ... } public void goEast() { ... } public void goWest() { ... } interface MoveAction { void move(); } private MoveAction[] moveActions = new MoveAction[] { new MoveAction() { public void move() { goNorth(); } }, new MoveAction() { public void move() { goSouth(); } }, new MoveAction() { public void move() { goEast(); } }, new MoveAction() { public void move() { goWest(); } }, }; public void move(int index) { moveActions[index].move(); }}
Since Java does not have the concept of methods as first-class entities, this is only possible using reflection, which is painful and error-prone.
The best approximation would probably be to have the levels as enums with a per-instance implementation of a method:
public enum Level1 implements Explorable{ ROOM1 { public void explore() { // fight monster } }, ROOM2 { public void explore() { // solve riddle } }, ROOM3 { public void explore() { // rescue maiden } };}public interface Explorable{ public abstract void explore(); }public static void move(Explorable[] adjacentNodes, int index){ adjacentNodes[index].explore();}
However, this is a bit of an abuse of the enum concept. I wouldn't use it for a serious project.