2010-12-08 93 views
0

J'ai une classe (par exemple District) qui met en œuvre deux méthodes:Modification d'une classe existante avec générateur GWT

public Object getAtribute(String name) { 

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

} 

Tout est configuré pour appeler mon générateur lorsque GWT.create (Dirstrict.class) est appelée.

maintenant Comment puis-je modifier la mise en œuvre de ces méthodes dans la même classe (par exemple écrire du code dans les) afin que le code final en classe District sera comme ceci:

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

Merci,

Répondre

1

Votre générateur ne sera pas réécriture la mise en œuvre de la classe District, il sera la génération d'une sous-classe de District avec une implémentation différente. Cette sous-classe générée est ce qui sera retourné par GWT.create(District.class).

Une fois que votre sous-classe générée est écrite, elle sera compilée en JavaScript et votre implémentation originale de superclasse peut être complètement supprimée si elle n'est jamais utilisée, donc l'effet sera le même.

0

Vous devez créer une classe de générateur qui étend com.google.gwt.core.ext.Generator et indiquer au compilateur gwt d'utiliser votre générateur pour générer la classe District.

your.gwt.xml

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

Mais d'abord, vous devriez penser à si vous avez vraiment besoin d'utiliser un générateur, car il rend le code plus complexe.