В статическом контексте, почему вы не можете вызвать статическую версию getClass()
(вместо необходимости использовать my.package.name.MyClassName.class
)?
Разве компилятор не достаточно умен, чтобы определить, когда использоватьметоды объекта + когда использовать статические методы?
ПРИМЕЧАНИЕ для ясности:
Я не говорю, что static getClass()
следует использовать вместо изнестатический метод getClass()
(это довольно очевидно - если SpecialFoo
является подклассом Foo
, то getClass()
из Foo
может вернуть Foo.class
или SpecialFoo.class
или что-то еще, и этодолжен быть определен во время выполнения).
Я говорю, что мне интересно, почему нет двух версий getClass()
, одной, которая является статическим методом, который применяется только в статическом контексте, и обычнойнестатический метод getClass()
.Если это невозможно, то это невозможно, и это ответ.Если это возможно, но просто не было сделано, то это исторический выбор, и, возможно, есть веская причина для этого.Это то, что я хотел бы знать.
Было бы здорово объявить
final static Logger logger = LoggerFactory.getLogger(getClass());
вместо
final static Logger logger = LoggerFactory.getLogger(my.package.name.MyClass.class);
, где первое можно было бы дословно скопировать из одногокласс к следующему, тогда как последний требует, чтобы вы скопировали имя класса в каждом файле.