Брайан Гетц о «финальном» ключевом слове

В этой статье: http://www.ibm.com/developerworks/java/library/j-jtp1029/index.html

Брайан Гетц утверждает: «Тот факт, что класс X скомпилирован с окончательным классом Y, не означает, что та же самая версия класса Y будет загружена во время выполнения».

Может ли кто-нибудь объяснить это более подробно? Если класс Y является окончательным, он не может быть подклассом, так что же означает это утверждение?


person shrini1000    schedule 24.01.2012    source источник


Ответы (3)


Предположим, вы загружаете класс X с помощью загрузчика классов с другой реализацией класса Y. В этом случае X будет связан с другим Y.

Обратите внимание, что в заявлении говорится «та же самая версия класса Y», что означает, что Y можно просто изменить после компиляции X.

person Greg Hewgill    schedule 24.01.2012
comment
Y также мог быть изменен до компиляции X. Разница в том, что было в пути к классам во время компиляции и во время выполнения. - person allingeek; 26.01.2012

Если X скомпилирован с классом Y, который находится в банке Z, вы можете запустить класс X с классом V в банке W.

это похоже на компиляцию класса в java 1.5, но запуск его в 1.6

person Peter    schedule 24.01.2012

Утверждается не то, что класс может быть подклассом. Но скорее у вас нет гарантии версии встроенного класса, с которой вы работаете. Вы можете внести некоторые изменения, перекомпилировать и заменить двоичные файлы. Ваш код будет работать, но это будет другая версия.

person allingeek    schedule 24.01.2012