Можно ли в Groovy указать переменные экземпляра Enums собственного типа?

Я делаю игру Text Adventure в Groovy в качестве упражнения и сталкиваюсь со странной ошибкой.

Прямо сейчас у меня есть enumдля направлений, по которым игрок сможет двигаться, в настоящее время включая север, юг, восток, запад, вверх и вниз.

У меня есть класс Room, который содержит Mapдругих связанных комнат и их направлений. Когда я добавляю Roomк другому Roomв определенном Direction, я хочу иметь возможность также добавлять текущий Roomк другому Roomв противоположном направлении.

Пример :Если я добавлю соединение из комнаты 1 в комнату 2 на север,Я хочу иметь возможность одновременно добавить соединение из комнаты 2 в комнату 1, идущую на юг.

В настоящее время я пытаюсь реализовать это, используя enumс именем Directionс прикрепленной переменной экземпляра opposite(. типаDirection). Разве это не разрешено? Я не получаю ошибок компилятора или чего-то еще, но я не могу заставить его работать.

Вот полная enumдекларация:

public enum Direction {
    North(South), South(North), East(West), West(East), Up(Down), Down(Up)
    private Direction opposite
    Direction(Direction d){
        opposite = d
    }
    public opposite(){
        return opposite
    }
}

И это метод, который я вызываю из:

public void addConnection(Direction d, Spot spot){
    connections[d] = spot
    spot.connections[d.opposite()] = this
}

где connections— это public Map<Direction, Spot>.

В этом случае в connectionsдобавляется запись, которая выглядит так:

null:Spot@some_hexadecimal_representation

Любая помощь будет здорово. Благодарю вас!

8
задан gobernador 2 July 2012 в 23:44
поделиться