Я случайно столкнулся с кодом Java на своем рабочем месте. Вот сценарий: Есть 2 класса - ClassA
и ClassB
.публичная статическая конечная переменная в импортированном классе java
ClassA
не содержит ничего, кроме 4 общедоступных статических окончательных значений строки внутри него. Его цель - использовать такие значения, как ClassA.variable
(не спрашивайте меня, почему, это не мой код).
ClassB
импорт ClassA
. Я отредактировал строковые значения в ClassA
и скомпилировал его. Когда я запустил ClassB
, я видел, что он использовал старые значения, а не новые значения. Мне пришлось перекомпилировать ClassB
, чтобы использовать новые значения от ClassA
! (Мне пришлось перекомпилировать другие классы, которые импортируют ClassA
!)
Это просто из-за JDK 1.6 или я должен был раньше знать, чтобы перекомпилировать ClassB
! Просветите меня. :)
Итак, вы говорите, что public static final - это константа времени компиляции? не знал этого. думал, что он просто постоянен и не может быть изменен во время выполнения! Спасибо за вашу помощь. –
Хороший anwser. Если вы хотите видеть, что переменная встраивается, вы можете использовать javap, чтобы увидеть, как скомпилирован класс, например. «javap -c Flags». –