【发布时间】:2021-12-22 20:34:10
【问题描述】:
不知道如何表达这个问题,所以请随时更新它。 我有一个复杂的枚举,它根据枚举值引用其他枚举,如下所示:
public enum EFormSw {
OBJ_KEY_LIST("Object Keys", EObjKeyType.class),
OBJ_NOTE_LIST("Object Notes", EObjNoteType.class);
public final String label;
public final Class</*"E is an Enum"*/> enumType;
// Constructor...
我希望能够在另一个班级做的是写一些类似的东西
EFormSw.OBJ_KEY_LIST.enumType.values().someThingElse().
只有在字段类型明确这是一个枚举时才有可能。
有什么办法可以做到这一点吗?
【问题讨论】:
-
你的意思是像
EFormSw.OBJ_KEY_LIST.enumType.values()这样的东西吗?我看不到您如何直接从EFormSw访问enumType。您必须使用OBJ_KEY_LIST或OBJ_NOTE_LIST。 -
@Sweeper:是的,当然,这是一个错字。感谢您指出这一点!
-
那么问题来了,如果你知道是
OBJ_KEY_LIST,为什么不能直接EObjKeyType.values()呢?如果你不知道它是哪个常量,那么你只会得到一个Enum<?>s 的数组,因为每个常量都有不同类型的enumType,你不知道它是哪一个。这对你真的有用吗? -
代码 sn-p 是主题的简化,以使问题对于 SO 问题更加精确。在实际代码中,会出现对 EFormSw 枚举的迭代,导致这个问题。
标签: java enums enumeration abstraction