我已经看过很多关于如何动态获取枚举值的StackOverflow帖子,因为你在编译时知道了Enum类,但我试图动态加载枚举类和枚举值,我没有看到如何做这个.
我正在尝试做这样的事情:
public interface Config {
public ConfigValue getConfigValue();
}
public enum AwsConfig implements Config {
ACCESS_KEY_ID( new ConfigValue(...) ),
API_URL( new ConfigValue(...) )
...
public static String getName() { return "AwsConfig"; }
...
}
public enum PaginatorConfig implements Config {
DEFAULT_PAGE_SIZE( new ConfigValue(...) ),
...
public static String getName() { return "PaginatorConfig"; }
...
}
public void myMethod( ConfigValue configValue ) {
String enumClassName = configValue.getName();
String enumConstantKeyName = configValue.getKey();
// I now have the enum's class name as enumClassName
// I now have the enum constant's name as enumConstantKeyName
// How can I dynamically get the enum constant's configValue based on the enumClassName and enumConstantKeyName?
// I know I can get the value dynamically if I know the Enum constant...
ConfigValue configValue = AwsConfig.valueOf("API_URL")
// But I wish I could do something like this...
ConfigValue configValue = Enum.valueOf( "AwsConfig", "API_URL" );
}
Run Code Online (Sandbox Code Playgroud)
如果您知道(或可以弄清楚)要从中加载值的枚举的完全限定类名,则可以执行以下操作:
String enumClassName = "com.mycompany.MyEnum";
String enumConstant = "MyValue";
Class enumClass = Class.forName(enumClassName);
Object enumValue = Enum.valueOf(enumClass, enumConstant);
assert enumValue == MyEnum.MyValue; // passes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2167 次 |
| 最近记录: |