Ваше перечисление может выглядеть так:
public enum Direction {
UP(0), DOWN(1), LEFT(2), RIGHT(3), NEUTRAL(4);
private Integer index;
Direction(Integer index){
this.index = index;
};
public Integer getIndex(){
return this.index;
}
}
и затем ваши операторы if:
Direction desired_direction = Direction.LEFT;
int[] LINK = {2,0,0,0,0};
if (desired_direction == Direction.LEFT || LINK[Direction.LEFT.getIndex()] > 0){
return true;
}
Или вы можете ссылаться на метод ordinal () вместопростота создания индекса Integer.Примерно так: LINK[Direction.LEFT.ordinal()] > 0
Однако, возможно, было бы целесообразно использовать хэш-карту (хотя логика не совсем совпадает с вашим вопросом:
Map<Direction, Integer> myLink = new HashMap<Direction, Integer>(5);
myLink.put(Direction.LEFT, 2);
myLink.put(Direction.RIGHT, 0);
myLink.put(Direction.UP, 0);
myLink.put(Direction.DOWN, 0);
if(myLink.get(desired_direction) > 0)
{
return true;
}
Но мой любимый способ - использовать всю логикусамо перечисление, а затем передача массива int в качестве параметра:
public Boolean getAnalysis(int[] link){
return link[this.getIndex()] > 0 ? Boolean.TRUE:Boolean.FALSE;
}
Мне также нравится явно задавать свойство индекса, а не полагаться на порядковый номер, на случай, если кто-то изменит перечисление в будущем и ваш вызовхотел бы это
Direction desired_direction = Direction.LEFT;
return desired_direction.getAnalysis(LINK);