【发布时间】:2016-07-13 09:02:56
【问题描述】:
过去几个小时我一直在尝试使以下功能正常工作。
public class OMG {
String name;
HashMap<SETTINGS, String> settings;
public enum SETTINGS {
Setting1("OMG setting 1"), Setting2("OMG setting 2");
private String key;
@Override
public String toString() {
return "SETTINGS: " + key;
}
SETTINGS(String key){
this.key = key;
}
}
public OMG(String name, HashMap<SETTINGS, String> settings) {
this.name = name;
this.settings = settings;
}
}
和
public class Test {
public static void main(String[] args) {
try {
Class<?> c = Class.forName("path.to.OMG" + "$" + "SETTINGS");
System.out.println(Arrays.toString(c.getEnumConstants()));
HashMap<c,String > values = new HashMap<>();
OMG omg = new OMG("blah",values);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
我必须创建一个 OMG 实例并获得 OMG 的路径和枚举名称。到目前为止,我在 Test 类中有代码。我能够获取所有 enumValues,但是我不知道如何创建 HashMap 以及如何使用此 HashMap 调用构造函数来获取 OMG 类的实例。
请帮忙。
谢谢
【问题讨论】:
-
您确定需要使用枚举名称吗?为什么不能只创建一个
HashMap<SETTINGS, String>?此外,OMG类应该与任何枚举一起使用还是仅与SETTINGS枚举一起使用? -
因为现实中的OMG类有多个枚举,我需要传递多个字典
-
那么你的问题解决了吗?如果不是,请发布代码示例和问题描述,以便我们提供有用的答案。如果是,请通过接受最有帮助的答案来表明这一点。
标签: java android reflection enums