【发布时间】:2022-12-17 13:03:41
【问题描述】:
我有一个 Java 类(我不控制也不能修改),它有大量的静态 String 成员。我怎样才能将这些作为枚举(为了编码方便)?
例如。我有:
public class ClassWithStaticMembers {
public static String ONE = "one";
public static String TWO = "dos";
}
...我想从中得出以下结论:
public enum NUMBERS {
ONE,
TWO
}
这是可能的,有反思或其他方式吗?
(假设我不太了解 Java,并且我有 100 多个值,所以重复每个值是痛苦的,也是不可取的(以防以后添加更多值)。而且我不需要类中的实际值(“一个”和上面的“dos”))。
【问题讨论】:
-
1. 没有意义。 2.
Numbers.valueOf(ClassWithStaticMembers.ONE.toUpperCase()); -
编码的便利性到底是什么?如果它是静态 final 或枚举常量,则仅使用常量名称几乎相同。问题是枚举是否还有您认为重要的其他属性。
-
你说什么意思“将这些作为枚举”?如果您只是想将这些字符串解析为现有枚举的常量,则不需要使用反射。
-
方便,可能与 Java 的无知和懒惰混合在一起,是我有一个使用枚举的上下文(像上面的那个,但有超过 100 个值),我找到了一个与静态成员具有相同值的类.我要么太懒,要么害怕,要么不允许更改任何一个上下文,所以我想要一个函数在它们之间进行映射(形式为 Class -> Enum 或其他)。我不想重复值(以便我从类的未来更新中受益,例如,在使用枚举的上下文中)。
-
“如果您只是想将这些字符串解析为现有枚举的常量,那么它不需要使用反射”:可能这就是我想要的:我该怎么做?
标签: java reflection enums