我正在使用Enum4库来创建一个枚举类,如下所示:
class Color(Enum):
RED = 1
BLUE = 2
Run Code Online (Sandbox Code Playgroud)
我想在[1, 2]某处打印列表.我怎样才能做到这一点?
我想通过读取YAML文件中的值在运行时创建枚举类型.所以我有这个:
# Fetch the values
v = {'foo':42, 'bar':24}
# Create the enum
e = type('Enum', (), v)
Run Code Online (Sandbox Code Playgroud)
有没有正确的方法呢?我觉得打电话type不是一个非常简洁的解决方案.
我不知道我是否是唯一知道这一点的人,但是枚举的值不是隐含的最终值,可以修改.
enum EnumTest {
TOTO("TOTO 1"),
TATA("TATA 2"),
;
private String str;
private EnumTest(String str) {
this.str = str;
}
@Override
public String toString() {
return str;
}
}
public static void main(String[] args) {
System.out.println(EnumTest.TATA);
EnumTest.TATA.str = "newVal";
System.out.println(EnumTest.TATA);
}
TATA 2
newVal
Run Code Online (Sandbox Code Playgroud)
这些值通常在实例创建(TOTO("TOTO 1"))时初始化,但除了我自己之外,我从未见过有人使用final关键字来表示应该是不可变的枚举变量.这不是问题的关键,只是想知道我是否是唯一意识到这一点的人.
我想知道的是,是否有任何用例来创建可变的枚举?
而且我也想知道我们可以用枚举做的限制(良好做法与否).我没有测试它,但也许枚举可以注入Spring bean?至少看起来我们可以注释每个实例(@Deprecated可以正常工作),以及方法.