Почему getClass () не доступен как статический метод?

Для JavaScript:

Для PHP:

Для OO разрабатывают & программирование, шаблоны:

Для Рефакторинга:

Для SQL/MySQL:

Pro

25
задан Jason S 20 April 2011 в 16:31
поделиться

2 ответа

Вы можете реализовать его самостоятельно. Получите трассировку стека и найдите класс вызывающего.

На самом деле библиотека logger могла сама это реализовать

static Logger logger = LoggerFactory.getLogger(); // auto detect caller class
.
2
ответ дан 28 November 2019 в 20:57
поделиться

В дополнение к другим ответам (которые объясняют, почему мы не можем создать статический метод с той же сигнатурой, что и нестатический метод 'getClass ()'), можно задаться вопросом, возможно ли получить, скажем, static Class getStaticClass(), так что, например, String.getStaticClass() будет эквивалентно String.class. Но, опять же, этот метод не может быть «нормальным» методом. Где бы он был определен? в объекте? Тогда как этот единственный метод узнает, что возвращать (String.class или Object.class), когда он вызывается как String.getStaticClass () или Object.getStaticClass ()? Это решит это во время выполнения? Ни за что.

Статический метод не имеет смысла, потому что String.class известен (разрешен) во время компиляции. Метод не имеет смысла во время выполнения; вам нужно было бы поработать над магией компиляции, чтобы результат вызова этого метода был действительно разрешен во время компиляции.

1
ответ дан 28 November 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: