gpt4 book ai didi

java - 非法前向引用和枚举

转载 作者:行者123 更新时间:2023-12-01 23:25:29 27 4
gpt4 key购买 nike

我正在用java编写一个游戏,它由瓷砖网格组成。我不希望能够直观地定义图 block 的边缘以及它们彼此之间的关系,例如要获得图 block 的相对边缘,我希望能够仅输入 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;
}
}

有没有办法使用同样简单的枚举来解决这个问题?

最佳答案

您可以这样做,但并不那么直观。

public enum Edge {
TOP, BOTTOM, LEFT, RIGHT;
private Edge opposite;

static {
TOP.opposite = BOTTOM;
BOTTOM.opposite = TOP;
LEFT.opposite = RIGHT;
RIGHT.opposite = LEFT;
}
public Edge opposite(){
return this.opposite;
}
}

关于java - 非法前向引用和枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58308921/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com