【问题标题】:Generate GWT class without using GWT.generate在不使用 GWT.generate 的情况下生成 GWT 类
【发布时间】:2013-07-22 10:30:19
【问题描述】:

我有一系列模型,每个模型都有一些属性,生成器使用这些属性自动生成 getter/setter(因为其中包含一些与默认值相关的逻辑,我不打算手动编写这些对于具有 20 个奇数场的模型)。

当我实例化模型时,我使用GWT.create(...),但有时我有引用我的模型的类,而这些类不知道 setter/getter 存在,因为它们是生成的。

例如,我有我的模型:

public class MyModel extends AbstractModel {
    private Integer uid;
    private String name;
    // ...
}

public interface JsonBinder<MyModel> {
    public void bindDataToMode(MyModel model, JSONWrapper json);
}

现在JsonBinder&lt;T&gt; 也是使用GWT.create 生成的类,但它指的是MyModel,而不是生成的MyModelImpl。因此在编译时我会得到类似setUid(Integer value) is not defined for class MyModel的错误。

有没有办法让编译器将MyModel 的所有用法替换为MyModelImpl

这适用于泛型和方法参数、返回类型等。

【问题讨论】:

    标签: java gwt generator


    【解决方案1】:

    没有。

    在您的具体情况下,我宁愿生成 MyModelImpl 等。预先,使用您想要的任何代码生成器(包括,例如,注释处理器),然后直接针对生成的类进行编码。

    【讨论】:

    • 好的,谢谢。如果我们不能让生成器为此工作,那将是我们的替代方案。谢谢!
    • 您能否指出有关如何使用注释生成代码的详细信息?我了解如何声明不做任何事情的基本注释(“注释”除外),但有没有办法使用它们来生成代码?
    • (我找到了这个:deors.wordpress.com/2011/09/26/annotation-types)但是如果你有更好的,请发布它:)
    • 注解不允许我修改我当前的源文件看起来,整个事情相当混乱,所以我正在使用 Project Lombok。
    • Project Lombok 建立在 hack 之上(但效果出奇的好)。注释处理器(或任何生成器)的想法是拥有生成类的描述符(在您的情况下为 Java 源代码的形式),但您的代码只引用 generated 类。有关该方法的示例,请参阅 github.com/ArcBees/GWTP/wiki/Boilerplate-Generation
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2011-12-13
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多