我正在一个GWT项目上工作,我想从包含其规范名称的字符串中获得类文字(而不是实例)。我希望我可以使用Class方法。但不幸的是,如您所知,此方法在JRE模拟中不可用。谢谢你的反馈。
您需要自己生成它——GWT故意不允许这样做。为了让GWT能够提供这一点,它需要从提供的源编译所有可能的类(和接口),它将无法删除任何未使用的代码,因为它不能自动理解您可能要求的类型。
请注意,如果你想要一个类的实例,同样的限制也会存在——你也不能用一个字符串来获得一个实例,至少在没有某种查找机制的情况下是这样。
,
很可能很多类型都不需要这个,可以手工生成,也可以自动生成,或者混合使用这些方法。
例如,如果你只需要访问几个自己的特定类,也许你可以用@ClassLookup
这样的东西来注释每个类,并创建一个注释处理器来收集它们,并提供一个Map<String, Class<?>>
实例,其中包含正确的名称和类实例。
另一方面,如果您需要一些您没有编写的类(因此,无法注释),则可以创建另一个注释,让您列出所需的其他类,或者您可以复制上面的映射并生成您自己的条目:
// for example, assuming the processor generated the LookupCache type:
Map<String, Class<?>> map = LookupCache.getMap();
map.put("java.lang.Double", Double.class);