static-инициализация выполняется перед первым активным использованием класса. Типичные триггеры: создание экземпляра через new, вызов статического метода, чтение или запись обычного статического поля и Class.forName() без отключённой инициализации.
Получение Foo.class, загрузка подкласса или чтение compile-time константы сами по себе могут не запустить <clinit>. Поэтому «класс уже загружен» и «его static-код уже выполнился» — разные утверждения.
Подробнее: Как JVM загружает и инициализирует классы.