Java 使用GWT生成器修改现有类

Java 使用GWT生成器修改现有类,java,reflection,gwt,code-generation,generator,Java,Reflection,Gwt,Code Generation,Generator,我有一个类(例如District),它实现了两个方法: public Object getAtribute(String name) { } public void setAtribute(String name, Object value){ } 一切都设置为在调用GWT.create(Dirstrict.class)时调用我的生成器 现在,我如何在同一个类中修改这些方法的实现(即在它们内部编写代码),以便District类中的最终代码如下所示: public Object getAtr

我有一个类(例如District),它实现了两个方法:

public Object getAtribute(String name) {

}
public void setAtribute(String name, Object value){

}
一切都设置为在调用GWT.create(Dirstrict.class)时调用我的生成器

现在,我如何在同一个类中修改这些方法的实现(即在它们内部编写代码),以便District类中的最终代码如下所示:

public Object getAtribute(String name) {
   //The generated code
}
public void setAtribute(String name, Object value){
   //The generated code
}

谢谢,

您必须创建一个扩展com.google.gwt.core.ext.generator的生成器类,并告诉gwt编译器使用您的生成器生成District类

您的.gwt.xml

<generate-with class="my.package.DistrictGenerator">
    <when-type-assignable
    class="my.package.District"/>
</generate-with>

但首先,您应该考虑是否真的需要使用生成器,因为它会使代码更加复杂。

您的生成器不会重写
District
类的实现,而是使用不同的实现生成
District
的子类。生成的子类将由
GWT.create(District.class)
返回

一旦您生成的子类被编写出来,它将被编译成JavaScript,如果从未使用过,您最初的超类实现可能会被完全剥离,因此效果将是相同的