gpt4 book ai didi

java - 枚举静态或非静态方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:45 35 4
gpt4 key购买 nike

考虑下面的枚举类

public enum ClassA {
CHECK1("X", 0),
CHECK2("Y", 2),
CHECK3("Z", 1);

private final String id;
private final String cdValue;

private ClsA(String id, String cdValue) {
this.id = id;
this.cdValue = cdValue;
}

private String getId() {
return id;
}

private String getCdValue() {
return cdValue ;
}

private static final List<String> cdValues = new ArrayList<String>();

static {
for (ClassA clsA : ClassA.values()) {
cdValues.add(clsA.getCdValue());
}
}

public boolean isCdValue(String cdValue)
{
if clsValues.contains(cdValue)
return true;
else return false;
}
}

我的问题是方法 isCdValue 是否必须是静态的。对于客户端提供的每个输入,我都必须使用此方法 isCdValue。因此,方法参数 cdValue 随每次输入而变化。

如果它不能是静态的,那么我想知道如何访问此方法。请注意,我主要对学习静态或非静态方法调用感兴趣。如果它是枚举中的非静态调用,那么我们如何调用这个非静态方法。我并不是要解决如何检查 cdValue 是否存在的问题。这只是一个例子。

最佳答案

does the method isCdValue has to be static.

是的,isCdValue 方法在这里必须是静态的。枚举是一种特殊的类。枚举常量定义枚举类型的实例。枚举类型除了由其枚举常量定义的实异常(exception)没有其他实例。因此 new 不能用于实例化枚举。

An enum type has no instances other than those defined by its enum constants. It is a compile-time error to attempt to explicitly instantiate an enum type (§15.9.1).

引用this

关于java - 枚举静态或非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19446204/

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