我很好奇如何做这项工作
Class<Map<String,String>> food = Map.class;
这显然不起作用。我想要这样的东西
Class<Map<String,String>> food = Map<String,String>.class;
但这似乎不是一个有效的java sytax。
如何使这项工作?
修改: 我想要这个的原因是因为我有这样的方法
protected <ConfigType> ConfigValue<ConfigType> getSectionConfig(String name, Class<ConfigType> configType) {
return config.getConfig(name);
}
我想称之为
ConfigValue<Map<String,Object>> config = getSectionConfig("blah", Map<String,Object>.class>);
Map<String,Value> val = config.value();
答案 0 :(得分:6)
做一个暴力演员
Class<Map<String,String>> clazz =
(Class<Map<String,String>>)(Class)Map.class;
这在理论上是不正确的,但这不是我们的错。我们有时需要这样的黑客攻击。
答案 1 :(得分:4)
根据JLS, Section 15.8.2,你不能这样做,因为:
C.class的类型,其中C是类,接口或数组类型(第4.3节)的名称,是Class&lt; C&gt;。
你最接近的是
Class<Map> food = Map.class;