非法前向引用和枚举
|
我正在用Java编写游戏,该游戏是由一个瓷砖网格组成的。我将无法以独创的方式定义图块的边缘以及它们之间的相互关系,例如要获得图块的相对边缘,我希望能够只键入
TOP.opposite()
。但是,当使用枚举定义这些边时,我最终不得不在构造函数中转发至少其中两个引用:
public enum Edge {
TOP(Edge.BOTTOM), //illegal forward reference
BOTTOM(Edge.TOP),
LEFT(Edge.RIGHT), //illegal forward reference
RIGHT(Edge.LEFT);
private Edge opposite;
private Edge(Edge opp){
this.opposite = opp;
}
public Edge opposite(){
return this.opposite;
}
}
有没有什么办法可以使用枚举来解决这个问题呢?
没有找到相关结果
已邀请:
11 个回复
感秆暴壳
抹持奠糙驰
死簇
甲车劲
但是,Peter Lawrey的解决方案更加高效且编译时安全。
岭取
从这里被盗:)
冲汉
剃摧庭峨僳
方法返回映射。
编辑:如在建议中更好地建议使用EnumMap,所以我相应地进行了升级 顺便说一句。当您创建静态
方法等内容时,此方法通常很有用。
糕泰灌
茶鬼失形
尽管不鼓励使用序数形式,因为它是易碎的,但在与它所定义的枚举相同的枚举中使用序数形式则较不易碎,在此通过注释进一步加以缓解。尽管上面的示例非常琐碎,但下一个示例却并非如此。比较原始方式和使用序数方式: 从98行:
至19行:
驮帽俺篮号
蹄渭信妥扳