Создавать интерфейс в JAVA? - PullRequest
2 голосов
/ 30 сентября 2010

Я читаю документы по UIBinder GWT, и первый фрагмент кода привел меня в замешательство:

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

Во второй строке локально создается интерфейс, расширяющий интерфейс UiBinder,Однако в третьей строке экземпляр этого интерфейса создается с использованием GWT.create().

Как это возможно?Нигде нет класса, реализующего MyUiBinder, поэтому его нельзя создать, верно?

Ответы [ 2 ]

3 голосов
/ 30 сентября 2010

GWT.create специально обрабатывается компилятором GWT Java во время компиляции. Класс GWT - это место, где Google помещает низкоуровневую «магию», которая заставляет работать GWT.

Подробнее по этому вопросу.

0 голосов
/ 30 сентября 2010

Вот довольно старый ответ (старый в SO;), который охватывает ту же тему.

Насколько я понимаю: он работает не волшебным образом, а с небольшой помощью генератора, который знает, как создать экземпляр для данного интерфейса (какой-то MyUIBinderGenerator в вашем примере). И этот генератор должен быть реализован и опубликован в каком-то файле gwt.xml.

...