我尝试实现
Hashtable<string, -Typeof one Class->
在Java中。但我不知道如何让这个工作。我试过了
Hashtable<String, AbstractRestCommand.class>
但这似乎是错误的。
顺便说一下。我希望这能在运行时为每个反射创建一个类的新实例。
所以我的问题是,如何做这种事情。
编辑:
我有抽象类“AbstractRestCommand”。现在我想用这样的许多命令创建一个Hashtable:
Commands.put("PUT", -PutCommand-);
Commands.put("DELETE", -DeleteCommand-);
其中PutCommand和DeleteCommand扩展了AbstractRestCommand,以便我可以使用
创建一个新实例String com = "PUT"
AbstractRestCommand command = Commands[com].forName().newInstance();
...
答案 0 :(得分:4)
您想创建字符串到类的映射吗?这可以这样做:
Map<String, Class<?>> map = new HashMap<String, Class<?>>();
map.put("foo", AbstractRestCommand.class);
如果要限制将可能的类型限制为某个接口或公共超类,可以使用有界通配符,以后可以使用映射的类对象创建该类型的对象:
Map<String, Class<? extends AbstractRestCommand>> map =
new HashMap<String, Class<? extends AbstractRestCommand>>();
map.put("PUT", PutCommand.class);
map.put("DELETE", DeleteCommand.class);
...
Class<? extends AbstractRestCommand> cmdType = map.get(cmdName);
if(cmdType != null)
{
AbstractRestCommand command = cmdType.newInstance();
if(command != null)
command.execute();
}
答案 1 :(得分:1)
我认为你的意思是:
Hashtable<String, ? extends AbstractRestCommand>
答案 2 :(得分:1)
尝试:
Hashtable<string, Object>
编辑:
阅读完编辑后,您可以这样做:
Hashtable<String, AbstractRestCommand>
答案 3 :(得分:1)
当然你只需要
Hashtable<String, AbstractRestCommand>