gpt4 book ai didi

java - 枚举可以是非静态的吗?

转载 作者:行者123 更新时间:2023-12-01 09:45:42 26 4
gpt4 key购买 nike

我有以下公共(public)枚举:

public enum CommandObject {
STRING/*etc.*/;
private Collection<String> validOptions = new ArrayList<>();

protected Collection<String> getValidOptions() {
return validOptions;
}

protected boolean hasValidOptions() {
return !validOptions.isEmpty();
}

protected CommandObject addValidOption(String option) {
validOptions.add(option);
return this;
}

public static CommandObject argsetOf(String... args) {
CommandObject result = STRING;
for (String option : args) {
result.addValidOption(option);
}
return result;
}
}

但看起来,无论我调用哪个实例,getValidOptions() 总是返回相同的集合。

例如,当调用 argsetOf("hi")argsetOf("bye") 时,集合始终由 ["hi","bye"组成]

有人知道这个问题的解决方法吗?我需要这个枚举具有“非静态”属性。

它不需要是枚举,但仍然应该易于使用。

最佳答案

枚举始终是静态的、隐式的。

这里的解决方法可能是将集合存储在枚举外部,例如枚举外部的非静态映射,以枚举值作为键:

Map<CommandObject, Collection<String>>

然后,您可以根据需要拥有任意多个此映射的单独实例,但仍将集合与特定枚举值相关联。

关于java - 枚举可以是非静态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38056803/

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