java - 初始化枚举中的列表

标签 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;
}
}

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

最佳答案

我认为应该是这样的:

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

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

关于java - 初始化枚举中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8697141/

相关文章:

enums - Rust-将特征包装在枚举中以用于内存布局和更简单的泛型?

java - 枚举变量如何工作?

java - 处理多个异常

java - 从没有数据库的 JavaFX 应用程序保存数据

activerecord - Rails 5 枚举,其中 "like"

java - 在单独的包中使用嵌套枚举作为参数

java - 如何检查 thymeleaf 中表字段的类类型?

java - 尝试使用 toString 绘制坐标

java - 为什么 Thread.sleep() 在 Action Performed 中不起作用?

java - 如何迭代类中的多个枚举