java – 是否可以将参数传递给Enum值?
发布时间:2020-05-25 10:59:24 所属栏目:Java 来源:互联网
导读:假设我有一个枚举定义如下: public enum Sample{ // suppose AClass.getValue() returns an int A(AClass.getValue()), B(AClass.getValue()), C(AClass.getValue()); private int _value; private
|
假设我有一个枚举定义如下: public enum Sample{
// suppose AClass.getValue() returns an int
A(AClass.getValue()),B(AClass.getValue()),C(AClass.getValue());
private int _value;
private Sample(int _val){
this._value = _val;
}
public int getVal(){
return _value;
}
我可以使用Sample.A或Sample.A.getAVal()提取值而不会出现问题. 现在假设AClass.getValue()可以使用参数来返回可能不同的特定值,例如AClass.getValue(42). 可以将参数传递给公共Enum方法并检索枚举值吗?换句话说,我可以像Enum一样定义 public enum Sample{
// suppose AClass.getValue() returns an int
A(AClass.getAValue()),B(AClass.getBValue()),C(AClass.getCValue());
private int _value;
private Sample(int _val){
this._value = _val;
}
public int getVal(){
return _value;
}
public int getVal(int a){
// somehow pull out AClass.getAValue(a)
}
使用Sample.A.getValue(42)? 解决方法你可以这样做,但只能在枚举中创建一个抽象方法,并在每个值中覆盖它:public enum Sample {
A(AClass.getAValue()) {
@Override public int getVal(int x) {
return AClass.getAValue(x);
}
},B(BClass.getAValue()) {
@Override public int getVal(int x) {
return BClass.getBValue(x);
}
},C(CClass.getAValue()) {
@Override public int getVal(int x) {
return CClass.getCValue(x);
}
};
private int _value;
private Sample(int _val){
this._value = _val;
}
public int getVal(){
return _value;
}
public abstract int getVal(int x);
}
当然,如果您可以创建一个具有getValue(int x)方法的其他基类型的实例,那么您可以将代码放入枚举类本身而不是嵌套类. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
