如何通过其属性获取枚举类型? [英] how to get the enum type by its attribute?

查看:218
本文介绍了如何通过其属性获取枚举类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经写了一个枚举类,我想要通过类型获取属性,并通过属性获取类型,但似乎是不可能的。

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

private final int ac;

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

int areaCode(){
return ac;
}

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

上面的代码不会编译。如何使 area(int n) work?

解决方案

需要做的是添加一个默认情况,所以方法总是返回一个或者抛出一个异常:

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

或更好的

  AreaCode区域(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));
}
}


I have written an enum class and I want to either get the attribute by type and get the type by attribute, but it seems impossible.

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;
        }
    }
}

The code above will not compile. How to make area(int n) work?

解决方案

All you need to do is add a default case so the method always returns something or throws an exception:

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

or perhaps better

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));
    }
}

这篇关于如何通过其属性获取枚举类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆