Я использую один и тот же исходный код для приложений GWT 1.5 и GWT 1.7.
Мне интересно, есть ли способ условно скомпилировать части кода Java для той или иной версии.
Я знаю, что есть способ сделать это для виджетов и браузеров в файле XML модуля.
Я использую один и тот же исходный код для приложений GWT 1.5 и GWT 1.7.
Мне интересно, есть ли способ условно скомпилировать части кода Java для той или иной версии.
Я знаю, что есть способ сделать это для виджетов и браузеров в файле XML модуля.
Решение очень простое.
String version = GWT.getVersion();
if (version.startsWith("1.5"))
{
// do something the 1.5.* way
}
Если вы действительно хотите это сделать, я думаю, подход будет заключаться в использовании генератора.
С генератором вы можете иметь отложенную привязку (немного самоанализа бедняка).
Чтобы получить доступ к коду версии 1.5 или 1.7, вам необходимо определить универсальный API в интерфейсе и использовать для него GWT.create, чтобы получить конкретную реализацию.
if (version.startsWith("1.5")) { // делаем что-то в стиле 1.5.* }
На самом деле это плохая идея. В идеале вы должны использовать здесь абсолютные строковые значения, потому что компилятор GWT оценит равенство и обрежет недостижимый код внутри условного выражения if из скомпилированного вывода. Использование .startsWith означает, что весь код попадет в конечное приложение.
К сожалению, версия GWT не является свойством времени компиляции. Возможно, лучший способ сделать это — создать пустую реализацию генератора, которая просто возвращает «ClassName15» или «ClassName17» из вызова в вашем модуле для «ClassName». Затем вы можете во время компиляции вызвать About.version() из генератора и узнать версию во время компиляции.