Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
05 Дек 2023
2 мин
324

Разница между canonical name, simple name и class name в классе Java

Пройдите тест, узнайте какой профессии подходите

При работе с классами в Java часто возникает необходимость получить имя класса. Для этого в Java существуют три метода: getSimpleName(), getName() и getCanonicalName(). Все

При работе с классами в Java часто возникает необходимость получить имя класса. Для этого в Java существуют три метода: getSimpleName(), getName() и getCanonicalName(). Все они возвращают имя класса, но в различной форме и для разных целей.

Рассмотрим пример. Пусть имеется следующий класс:

package com.example;

public class TestClass {

    public class InnerClass {
    }
}

Теперь проанализируем, что возвращают методы getSimpleName(), getName() и getCanonicalName() для данного класса.

Метод getSimpleName() возвращает простое имя класса без учета пакета и вложенных классов. В нашем случае для класса TestClass метод вернет «TestClass», а для вложенного класса InnerClass — «InnerClass».

Метод getName() возвращает полное имя класса, включая пакет и вложенные классы, но вложенные классы разделяются символом «$». Для класса TestClass метод вернет «com.example.TestClass», а для вложенного класса InnerClass — «com.example.TestClass$InnerClass».

Метод getCanonicalName() возвращает каноническое имя класса, включая пакет и вложенные классы, причем вложенные классы разделяются точкой. Для класса TestClass метод вернет «com.example.TestClass», а для вложенного класса InnerClass — «com.example.TestClass.InnerClass».

Таким образом, выбор метода для получения имени класса зависит от конкретной задачи. Если необходимо получить простое имя класса без учета пакета и вложенности, следует использовать getSimpleName(). Если важно учесть пакет и вложенность, то следует выбирать между getName() и getCanonicalName(), в зависимости от того, каким образом предпочтительнее разделять вложенные классы — символом «$» или точкой.

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