2010-09-30 3 views
2

Je lis la documentation sur le UIBinder de GWT et le premier extrait de code m'a fait confus:Instancier l'interface dans JAVA?

public class HelloWorld extends UIObject { // Could extend Widget instead 
    interface MyUiBinder extends UiBinder<DivElement, HelloWorld> {} 
    private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); 

    @UiField SpanElement nameSpan; 

    public HelloWorld() { 
    // createAndBindUi initializes this.nameSpan 
    setElement(uiBinder.createAndBindUi(this)); 
    } 
} 

Sur la deuxième ligne est une interface créée localement qui étend l'interface UiBinder. Cependant, sur la troisième ligne, une instance de cette interface est créée en utilisant GWT.create().

Comment est-ce possible? Il n'y a nulle part une classe qui implémente MyUiBinder, elle ne peut donc pas être instanciée, n'est-ce pas?

Répondre

3

GWT.create est traité spécialement par le compilateur Java GWT au moment de la compilation. La classe GWT est l'endroit où Google met la «magie» de bas niveau qui fait fonctionner GWT.

More details under this question.

0

est ici un peu old answer (ancienne en termes SO;)) qui couvre le même sujet. D'après ce que je comprends: cela ne fonctionne pas comme par magie mais avec l'aide d'un générateur qui sait comment créer une instance pour une interface donnée (un peu MyUIBinderGenerator dans votre exemple). Et ce générateur doit être implémenté et publié dans un fichier gwt.xml.

Questions connexes