java - GWT:从包含其名称和路径的字符串中获取类文字
问题描述
我正在处理一个 GWT 项目,我想从包含其规范名称的字符串中获取类文字(而不是实例)。我希望我可以使用 Class.forname 方法,但不幸的是,如您所知,此方法在 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);
推荐阅读
- excel-formula - Formula to get the difference between a number and a static one
- python - 指定 Python pip requirements.txt 大于但小于时出错
- node.js - 如何为 node-excel-export 设置行高?
- google-apps-script - 将通过 gmail 发送给特定联系人的最后一封电子邮件的“时间戳”添加到谷歌表格
- php - 如何在php中的echo中实现foreach循环
- c - 为什么这个循环不能用于找到向量的欧几里得和?
- scala - 期货列表的 Monix 任务处理失败
- windows - Windows 上的 RUST:获取 LINK:致命错误 LNK1181 错误
- php - 无法访问会话数据 session_write_close
- python - 如何用另一个列表中的数字替换字符串中的数字?