我已经写了一个枚举类,我想按类型获取属性或按属性获取类型,但这似乎是不可能的。

public enum AreaCode {
    area1(7927),
    area2(7928),
    area3(7929);

    private final int ac;

    AreaCode(int ac) {
        this.ac = ac;
    }

    int areaCode(){
        return ac;
    }

    AreaCode area(int n) {
        switch (n) {
            case 7927: return AreaCode.area1;
            case 7928: return AreaCode.area2;
            case 7929: return AreaCode.area3;
        }
    }
}

上面的代码将无法编译。如何使area(int n)工作?

最佳答案

您需要做的就是添加一个默认情况,以便该方法始终返回某些内容或引发异常:

AreaCode area(int n){
    switch (n) {
    case 7927: return AreaCode.area1;
    case 7928: return AreaCode.area2;
    case 7929: return AreaCode.area3;
    default: return null;
    }
}

也许更好
AreaCode area(int n){
    switch (n) {
    case 7927: return AreaCode.area1;
    case 7928: return AreaCode.area2;
    case 7929: return AreaCode.area3;
    default: throw new IllegalArgumentException(String.valueOf(n));
    }
}

关于java - 如何通过其属性获取枚举类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7888560/

10-09 05:06