首页 > 解决方案 > GWT:从包含其名称和路径的字符串中获取类文字

问题描述

我正在处理一个 GWT 项目,我想从包含其规范名称的字符串中获取类文字(而不是实例)。我希望我可以使用 Class.forname 方法,但不幸的是,如您所知,此方法在 JRE 仿真中不可用。感谢您的反馈意见。

标签: javastringclassreflectiongwt

解决方案


您需要自己生成它 - 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);

推荐阅读