В статических контекстах, почему вы не можете вызвать статическую версию getClass()
(вместо того, чтобы использовать my.package.name.MyClassName.class
)?
Не достаточно ли достаточно компилятора определить, когда использовать методы объекта +, когда использовать статические методы?
ПРИМЕЧАНИЕ для ясности:
Я не говорю, что вместо нестатического метода getClass()
следует использовать static getClass()
(такой вид - если SpecialFoo
является подклассом Foo
, то getClass()
of 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);
где первое может быть скопировано дословно из одного класса в другое, тогда как последнее требует, чтобы вы копировали имя класса в каждом файле.