Зачем использовать GWT.создать () вместо нового?


в чем разница между GWT.create(SomeClass.class) и new SomeClass()?

почему бы вам использовать один над другим?

2 56

2 ответа:

GWT.create используется компилятором GWT для отложенной привязки. Отложенная привязка-это функция компилятора GWT, которая работает путем создания многих версий кода во время компиляции, только одна из которых должна быть загружена конкретным клиентом во время начальной загрузки во время выполнения.

вы должны использовать GWT.create для тех случаев, которые зависят от данного конкретного случая использования. Например, при создании класса RPC:(MyServiceAsync)GWT.create(MyService.class). Во всех остальных случаях используйте new.

дополнительные информация проверьте страницу GWT на отложенной привязке: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsDeferred.html

GWT.создать использует отложенную работу привязки к Вокруг из-за отсутствия поддержки отражения.

по словам часто задаваемые вопросы:

отложенная привязка-это ответ Google Web Toolkit на отражение Java.

проще всего объяснить отложенную привязку, начав с прецедента. Каждый веб-браузер имеет свои собственные особенности, как правило, много из них. (Явное неуправляемое количество из них-это проблема, для которой был создан GWT решить в первую очередь.) Стандартный Java-способ работы с идиосинкразиями заключается в инкапсуляции пользовательского кода в подклассы с одним подклассом для каждого поддерживаемого браузера. Во время выполнения приложение будет использовать отражение и динамическую загрузку классов, чтобы выбрать соответствующий подкласс для текущей среды, загрузить класс, создать экземпляр, а затем использовать этот экземпляр в качестве поставщика услуг на протяжении всей программы.

Это действительно то, что делает GWT. Однако среда JavaScript, в которой в конечном итоге выполняются приложения GWT, просто не поддерживает динамическую загрузку классов (также известную как динамическая привязка.) Вы, конечно, можете включить код для поддержки каждого браузера в свой сгенерированный код JavaScript, но для этого вы должны включить поддержку всех браузеров в один файл приложения. Почему пользователь Opera должен загружать код, специфичный для Firefox, когда нет никаких шансов, что он когда-либо понадобится?

потому что динамический привязка недоступна как метод для GWT, GWT вместо этого использует отложенную привязку. Один из способов думать об этом-это "динамическая загрузка класса, которая происходит во время компиляции вместо времени выполнения."Когда компилятор GWT компилирует ваше приложение Java, он определяет все различные "особенности", которые он должен поддерживать, и генерирует отдельную, плотно оптимизированную версию приложения для этой конкретной конфигурации. Например, он создает другую версию файла приложения для Firefox, чем это делает для Opera.