Ситуация, типичная для начинающих разработчиков на Java: необходимо получить имя текущего класса. Как правило, этого можно достичь при помощи следующего кода:
String className = this.getClass().getName();
Однако, иногда Java добавляет к имени класса символ $
и число, что может ввести в заблуждение. Это случается, когда используется анонимный внутренний класс или класс, определенный внутри метода. В таком случае, Java добавляет $
и инкрементное число к имени внешнего класса, чтобы сгенерировать уникальное имя для внутреннего класса.
Рассмотрим пример:
public class OuterClass { void someMethod() { Runnable r = new Runnable() { public void run() { String className = this.getClass().getName(); System.out.println(className); } }; r.run(); } }
В этом случае, если вызвать someMethod()
у экземпляра OuterClass
, то на консоль будет выведено OuterClass$1
, где 1
— это порядковый номер анонимного внутреннего класса.
Если же потребуется получать только имя внешнего класса, то можно использовать метод getSimpleName()
, который вернет имя без пакета и без указания внутренних классов.
String className = this.getClass().getSimpleName();
Важно помнить, что имена классов в Java — это не просто строки. Они играют важную роль в идентификации классов во время выполнения программы. Поэтому любые «ненужные» символы, включая $
и номер после него, на самом деле выполняют важную функцию и не являются бессмысленными.
Добавить комментарий