我很好奇如何使这项工作
Class<Map<String,String>> food = Map.class;
Run Code Online (Sandbox Code Playgroud)
这显然不起作用.我想要这样的东西
Class<Map<String,String>> food = Map<String,String>.class;
Run Code Online (Sandbox Code Playgroud)
但这似乎不是一个有效的java sytax.
怎么能让这个工作?
编辑:我想要这个的原因是因为我有这样的方法
protected <ConfigType> ConfigValue<ConfigType> getSectionConfig(String name, Class<ConfigType> configType) {
return config.getConfig(name);
}
Run Code Online (Sandbox Code Playgroud)
我想这样称呼它
ConfigValue<Map<String,Object>> config = getSectionConfig("blah", Map<String,Object>.class>);
Map<String,Value> val = config.value();
Run Code Online (Sandbox Code Playgroud)
做一个粗暴的演员
Class<Map<String,String>> clazz =
(Class<Map<String,String>>)(Class)Map.class;
Run Code Online (Sandbox Code Playgroud)
这在理论上是不正确的,但这不是我们的错.我们有时需要这样的黑客攻击.
根据JLS 第 15.8.2 节,您不能这样做,因为:
\n\n\n\n\nC.class 的类型为 Class<C>,其中 C 是类、接口或数组类型 (\xc2\xa74.3) 的名称。
\n
你能到达的最接近的是
\n\nClass<Map> food = Map.class;\nRun Code Online (Sandbox Code Playgroud)\n