getClass()
метод определен в классе Object со следующей сигнатурой:
public final Класс getClass ()
Поскольку он не определен как
static
, вы не можете вызвать его в статическом блоке кода. См. Эти ответы для получения дополнительной информации: Q1 , Q2 , Q3 .Если вы находитесь в статическом контексте, то вы должны использовать выражение класса литерала для получения класса, поэтому вам в основном нужно делать:
Foo.class
Этот тип выражения называется литературой класса, и они объясняются в книге спецификации языка Java следующим образом:
Литерал класса - это выражение, состоящее из имени класса, интерфейса, массива , или примитивный тип, за которым следует `. ' и класс токенов. Тип литерала класса - это класс. Он оценивает объект класса для именованного типа (или для void), как определено определяющим загрузчиком класса для класса текущего экземпляра.
Вы также можете найти информацию об этой теме на API-документация для класса.