初始化枚举中的列表

时间:2012-01-02 03:22:56

标签: java enums

假设我想定义一个指向对象数组的枚举。可以这样做吗?在下面的代码中,注释掉的部分定义了指向单个对象的枚举并且工作正常,但是尝试初始化对象数组的未注释代码会导致一堆错误。

public enum SightSensor{

/*NORTH (new MapLocation(0,1)),
SOUTH (new MapLocation(0,-1));

private final MapLocation loc;

SightSensor(MapLocation loc){
this.loc = loc;
}

public MapLocation getLoc(){
return loc;
}*/

NORTH ({new MapLocation(0,1), new MapLocation(0,2)}),
SOUTH ({new MapLocation(0,-1), new MapLocation(0,-2)});

private final MapLocation[] locs;

SightSensor(MapLocation[] locs){
this.locs = locs;
}

public MapLocation[] getLocs(){
return locs;
}
}

在相关的说明中,假设我想在两个枚举之间定义一个固定的映射:最好的方法是什么?地图?哈希?确切地说,假设类似于上面的代码,我想定义一个对象A,如果NORTH是一个不同的枚举值,A [NORTH]将返回所需的MapLocations列表。

2 个答案:

答案 0 :(得分:2)

我认为应该是这样的:

NORTH (new MapLocation[]{new MapLocation(0,1), new MapLocation(0,2)}), ...

{...}构造不能在该上下文中使用。

答案 1 :(得分:0)

始终记住{ }只有在声明数组的语句中使用时才能用于定义数组。

e.g。

MapLocation[] locs = {new MapLocation(0,1), new MapLocation(0,2)};