Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
11 Сен 2023
2 мин
517

Получение имени текущего класса в Java

Ситуация, типичная для начинающих разработчиков на Java: необходимо получить имя текущего класса. Как правило, этого можно достичь при помощи следующего

Ситуация, типичная для начинающих разработчиков на 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 — это не просто строки. Они играют важную роль в идентификации классов во время выполнения программы. Поэтому любые «ненужные» символы, включая $ и номер после него, на самом деле выполняют важную функцию и не являются бессмысленными.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий