gpt4 book ai didi

java - Java 中具有负值/间隙值的枚举

转载 作者:行者123 更新时间:2023-12-03 21:45:13 27 4
gpt4 key购买 nike

我对 Java 中的枚举有疑问。我有一个从 -1 开始的枚举:

    public enum AipType {
Unknown(-1),
None(0),
AipMod(1),
AipNoMod(2);

private final int id;
AipType(int id) {this.id = id;}
public int getValue() {return id;}
}

问题是当我使用这段代码来初始化 AipType 的 var

AipType at = AipType.getValues()[index];

其中 index 是区间 [-1,0,1,2] 中的一个数字,-1 弄乱了值。即 0 返回未知,1 返回 AipMod,2 返回 AipNoMod。

我使用这个实现是因为我需要为每个枚举案例手动设置数值。在其他情况下,我在值之间存在差距,所以我遇到了同样的问题:我无法使用 values() 然后使用 [ ] 进行访问。

我试过这样初始化

AipType at = AipType(index);

但不起作用。

想法?谢谢...

最佳答案

我们不知道您使用的 getValues() 方法到底在做什么。它应该是 values().

无论如何,您始终可以在enum 中添加一个static 方法,它返回该值的正确enum 实例,并调用它无论您需要什么:

public enum AipType {
Unknown(-1),
None(0),
AipMod(1),
AipNoMod(2);

private final int id;
AipType(int id) {this.id = id;}
public int getValue() {return id;}

public static AipType fromValue(int id) {
for (AipType aip: values()) {
if (aip.getValue() == id) {
return aip;
}
}
return null;
}
}

如果您过于频繁地调用 fromValue(),您可能还想将 values() 返回的数组缓存在 enum 本身,并使用它。或者更好的是, map 会是一个更好的主意。

关于java - Java 中具有负值/间隙值的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22305557/

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