Поток создания экземпляра с использованием GWT.Create и UI-Binder - PullRequest
0 голосов
/ 30 января 2019

Я просматривал код нашего приложения GWT.И застрял в фрагменте кода ниже.

private static TestEditorUiBind uiBinder = GWT.create(TestEditorUiBind.class);

interface TestEditorUiBind extends UiBinder<Widget,TestEditorViewImpl> {}

Это две начальные строки моего класса.И после этого мы создаем наш GWT Widget, используя uiBinder.createAndBindUi(this);

Я знаю, что GWT.create создаст экземпляр TestEditorUiBind во время выполнения.

Но я не понимаю, почемумы объявили интерфейс TestEditorUiBind во 2-й строке и использовали его в 1-й строке в GWT.create?(Я проверил, что TestEditorUiBind не заявлено нигде в приложении)

Пожалуйста, исправьте меня, если я понял что-то не так.

1 Ответ

0 голосов
/ 30 января 2019

Из-за того, как работает язык Java, порядок строк не имеет значения - новый тип (enum, interface, class) объявлен в , другой тип фактически становится его собственным типом и не нуждается вждать, чтобы быть объявленным в этом типе владельца.Похоже, что эти две строки кода существуют в TestEditorViewImpl.java - при условии, что java-компилятор фактически создаст два скомпилированных файла байт-кода:

  • TestEditorViewImpl.class
  • TestEditorViewImpl$TestEditorUiBind.class

Первая строка просто запрашивает экземпляр TestEditorViewImpl$TestEditorUiBind, где когда-либо было объявлено.

Так что да, это статическое поле, вероятно, единственное место впроект, который будет использовать этот тип, поскольку он специфичен для привязки .ui.xml к этому классу.Можно использовать синглтон, так как этот связыватель не будет иметь состояния, а просто заполнит поля в пределах TestEditorViewImpl на основе того, что он нашел в файле .ui.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...