Для JavaScript:
Для PHP:
Для OO разрабатывают & программирование, шаблоны:
Для Рефакторинга:
Для SQL/MySQL:
Pro
Вы можете реализовать его самостоятельно. Получите трассировку стека и найдите класс вызывающего.
На самом деле библиотека logger могла сама это реализовать
static Logger logger = LoggerFactory.getLogger(); // auto detect caller class
. В дополнение к другим ответам (которые объясняют, почему мы не можем создать статический метод с той же сигнатурой, что и нестатический метод 'getClass ()'), можно задаться вопросом, возможно ли получить, скажем, static Class getStaticClass()
, так что, например, String.getStaticClass()
будет эквивалентно String.class
. Но, опять же, этот метод не может быть «нормальным» методом. Где бы он был определен? в объекте? Тогда как этот единственный метод узнает, что возвращать (String.class или Object.class), когда он вызывается как String.getStaticClass () или Object.getStaticClass ()? Это решит это во время выполнения? Ни за что.
Статический метод не имеет смысла, потому что String.class
известен (разрешен) во время компиляции. Метод не имеет смысла во время выполнения; вам нужно было бы поработать над магией компиляции, чтобы результат вызова этого метода был действительно разрешен во время компиляции.