Я всегда думал, что загрузка классов и инициализация классов являются синонимами и обычно выполняются по требованию, когда инициализированный/загруженный класс используется в some way or the other for the first time. Но теперь я знаю от this answer on SO regarding the behavior of final static fileds that holds compile time constants, что мое убеждение неверно.Загрузка класса с инициализацией класса
Пожалуйста, обратите внимание на следующее, что делает его совершенно ясно, что класс загрузки и инициализации два различных механизма.
В боковой точки, обратите внимание на различие между классом загрузки и инициализации класса: появление только последний является именно задается JLS. Загрузка классов может произойти в любое время.
Но может кто-то объяснить разницу между загрузкой классов и инициализацией класса на языке Java. Обычно интуиция говорит, что инициализации всегда должна предшествовать загрузка, но я совершенно ошибаюсь. Может ли инициализация произойти без загрузки класса?
[Перейдите к главе 12 JLS.] (Http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.1) В частности, 12.2 и 12.4. –
Также [Глава 5 спецификаций виртуальной машины Java] (http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html) –