如何通过其属性获取枚举类型? [英] how to get the enum type by its attribute?
本文介绍了如何通过其属性获取枚举类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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屋!
查看全文