2

I'm reading the docs on the UIBinder of GWT and the first code snippet made me confused:

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));
  }
}

On the second line an interface is created locally which extends the UiBinder interface. However, on the third line an instance of this interface is created using GWT.create().

How is this possible? There's nowhere a class that implements MyUiBinder, so it can't be instantiated, right?

2 Answers 2

3

GWT.create is treated specially by the GWT Java compiler at compile time. The GWT class is the place where Google puts the low-level "magic" that makes GWT work.

More details under this question.

Sign up to request clarification or add additional context in comments.

Comments

0

Here is a rather old answer (old in SO terms ;) ) that covers the same topic.

As far as I understand: it does not work magically but with the little help of a generator that knows how to create an instance for a given interface (some MyUIBinderGenerator in your example). And that generator has to be implemented and published in some gwt.xml file.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.