У меня есть два Java-класса, расположенных в разных jar-файлах, развернутых на IBM Websphere App Server 7.0 (он немного устарел, но я вынужден использовать его в проекте).
Первый класс имеет статическое конечное поле:
public class TFFVERSION {
public static final String ACTUAL_VERSION = "8.3";
}
Второй использует поле в нестатическом методе:
xslTemplate = String.format("%s_v%s", xslTemplate, TFFVERSION.ACTUAL_VERSION);
Я пытаюсь понять, почему компилятор помещает копию константы 8.3
в вызов String.format
? Это делает невозможным просто изменить первый класс без перекомпиляции и повторного развертывания второго класса.
Это своего рода оптимизация или ошибка в IBM Java V9?
Здесь я открыл файлы классов в текстовом редакторе, показывая проблему (изображение кликабельно для лучшего разрешения):
Однако декомпиляторы Java показывают правильный вызов статического поля. Во втором классе нет других 8.3
констант.