【问题标题】:compare Two variables of enum in java比较java中枚举的两个变量
【发布时间】:2021-11-17 11:13:45
【问题描述】:
public enum Direction {
  UP,
  RIGHT,
  DOWN,
  LEFT,
}

我有两个枚举变量(a 和 b),在一种情况下,我必须检查 b 是否是 a 的下一个变量 例如 如果a=UPb=RIGHT。 还有a=leftb=UP。 大概是这样的:

if(Direction.valueOf(a+1)==Direction.valueOf(b))

但是当a=LEFT 时它会像数组一样越界对吗?

【问题讨论】:

  • 是的,您需要手动环绕
  • 老实说,我不会打扰valueOf()。只需检查他们的ordinal()%

标签: java enums


【解决方案1】:

试试这个。

public enum Direction {
    UP,
    RIGHT,
    DOWN,
    LEFT;
    
    private static final Direction[] VALUES = values();
    
    public Direction next() {
        return VALUES[(ordinal() + 1) % VALUES.length];
    }
  }

public static void main(String[] args) {
    Direction a = Direction.LEFT;
    Direction b = Direction.UP;
    System.out.println(a.next() == b);
}

输出:

true

【讨论】:

    【解决方案2】:
    if (b == Direction.values()[(a.ordinal() + 1) % Direction.values().length])
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多