java - 为什么 GWT 使用代码生成器而不是注释处理器?

标签 java gwt code-generation annotation-processing

GWT 使用带有 GWT.create() 命令的代码生成器来生成实现。这提供了一种在 GWT 中执行操作的声明性方式,但我不明白为什么它不像大多数 java 那样使用注释处理器来完成。 this article这就是原创让我想到的。看起来它会简化构建并让您看到编译时错误并且与常规 java 更加兼容。这是一个附带问题,但我是唯一一个认为 GWT 应该支持反射的人吗?我听说这会使代码变慢,但仍然如此。在某些情况下这不值得吗?

最佳答案

GWT 是在 Java 语言/平台 (Java 1.4) 中存在注释之前创建的,这就是原因。

新的开发往往倾向于注释处理,并且最终将作为 SuperDevMode 重新编译的一部分得到支持(您当前必须运行注释处理器并让 SDM 选择“修改后的”生成的源);一个例子是 Dagger 2 .
然而,我认为这种方法并不适用于当前在 GWT 中使用生成器的所有情况。

至于 GWT.create(),对于延迟绑定(bind)的替换为情况,它仍然是需要/有用的。


对于反射来说,这不是“慢”的问题,而是需要嵌入到生成的 JS 代码中以支持运行时反射的元数据。鉴于一切在编译时都是已知的,因此几乎不需要在运行时进行反射;您通常可以使用编译时生成的代码来替代运行时反射。所以不,这不值得。

关于java - 为什么 GWT 使用代码生成器而不是注释处理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957400/

相关文章:

java - 使用 Eclipse 进行远程调试 - 如何设置断点?

java - Android ORMLite DatabaseConfigUtil

javascript - 为什么 Firefox 会等到一个 javascript 函数完成后再启动另一个函数?

eclipse - 禁用部分Javadoc的Eclipse代码格式

java - Lombok 与 hibernate

java - 欧拉项目 14 : Issue with array indexing in a novel solution

java - Windows OpenNMS - PostgreSQL/Java 数据库问题

java - gwt-maven-plugin 无法编译,因为 "No source code is available for type org.hibernate.validator.constraints.impl.SizeValidatorForString;"

java - SmartGWT 存在剩余数据源错误

flutter - 如何从 GraphQL 生成 Dart - graphql 到 dart 生成器