[英]Using enums as List elements in Java possible?
我有一个 state 可以通过一些离散的variables
进行参数化。 所以每个variable
都可以用几个enum
值来描述。 但是variables
的数量可能会有所不同。
以下代码是不可能的:
public enum Var0 {
LEFT, RIGHT;
}
public enum Var1 {
TOP, BOTTOM;
}
// somewhere
List<enum> vars = new ArrayList<>(); // this is not working
vars.set(0,Var0); // put the whole enum in a list element
vars.set(1, Var1);
// somewhere else I want something like this
for (int i = 0; i < vars.get(i).values().length; i++) {
vars.get(i).
for (Enum var : vars.get(i).values()) {
System.out.println(var.name())
..
}
}
// or this ??
System.out.println(vars.get(1).values()[1]) //
...
欢迎提出任何建议,如果/如何在这种情况下使用enums
Var0
和Var1
是类,因此在需要表达式的地方编写vars.set(0, Var0)
是编译时错误。 写List<enum>
也是语法错误,因为enum
不是类型; Enum
是。
但是,您可以使用Enum
值的 arrays 列表来实现:
List<Enum[]> vars = new ArrayList<>();
vars.add(Var0.values());
vars.add(Var1.values());
for(Enum[] e : vars) {
for(Enum v : e) {
System.out.println(v.name());
}
}
不完全是您所要求的,但如果您真的想要,您实际上可以展平列表并摆脱 arrays:
public class EnumsWithInterface {
public interface VarIf {
String name();
}
public enum Var0 implements VarIf {
LEFT, RIGHT;
}
public enum Var1 implements VarIf {
TOP, BOTTOM;
}
public static void main(String[] args) {
List<VarIf>vars = new ArrayList<VarIf>();
vars.addAll(Arrays.asList(Var0.values()));
vars.addAll(Arrays.asList(Var1.values()));
for (VarIf var : vars) {
System.out.println(var.name());
}
}
}
我想,用它制作Set
会更有意义。 请注意,如果您想再次拥有一个enum
变量,则必须检查 / 强制转换,因为它在编译时会丢失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.