gpt4 book ai didi

java - 是否可以将参数传递给枚举值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:18 25 4
gpt4 key购买 nike

假设我有一个 Enum 定义如下:

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.ASample.A.getAVal() 毫无问题地提取值。

现在假设 AClass.getValue() 可以接受一个参数来返回一个可能不同的特定值,例如 AClass.getValue(42)

可以将参数传递给公共(public)枚举方法并检索枚举值吗?换句话说,我可以有一个像

这样的 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) 方法的一些other 基类型的实例,那么您可以将代码放入枚举类中本身而不是嵌套的。

关于java - 是否可以将参数传递给枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14241190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com