Java - Creating an array of methods Java - Creating an array of methods arrays arrays

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();    }}


Just have your nodes be objects that all adhere to the same interface, then you'll be able to call their methods reliably.


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.