如何根据提供给构造函数的参数找到枚举值?

Joh*_*nes 3 java enums

我有一个像这样的枚举类:

public enum Position {
    A1(0,0),
    A2(1,0),
    //etc

    public final int dy, dx;

    private Position(int dy, int dx) {
        this.dy = dy;
        this.dx = dx;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想要一个方法:public static Position getPosition(int dx, int dy) 我可以返回Position.A1Position.A2使用给定的dx并且dy不使用大量的if结构吗?

Tom*_*ine 7

也许最简单的方法(实际上相对较快)就是简单地循环遍历枚举:

public static Position getPosition(int dx, int dy) {
    for (Position position : values()) {
        if (position.dx == dx && position.dy == dy) {
            return position;
        }
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)