Что означает .class в, например, MyClass.class? Я понимаю, что когда вы добавляете имя класса и точки, он используется для доступа к его статическим полям или методам, но это не относится к ".class"
Что означает класс для класса после имени класса
Ответ 1
SomeClass.class получает тип Class<SomeClass>, который вы можете использовать для программирования с помощью API отражения.
Вы можете получить тот же тип, если у вас есть экземпляр класса с помощью instance.getClass().
Здесь вы можете посмотреть здесь. Например, вы можете:
- получить имена полей и методов, аннотаций и т.д.
- вызывать методы, получить конструктор для создания новых экземпляров класса
- получить имя класса, суперкласс, пакет и т.д.
Ответ 2
Когда вы пишете .class после имени класса, он ссылается на объект Class, который представляет данный класс (формально он именованный класс литерала). Тип NombreClase.class равен Class<NombreClase>.
Например, NombreClase.class - это объект, который представляет класс NombreClase во время выполнения. Это тот же объект, который возвращается методом getClass() любого (прямого) экземпляра NombreClase.
NombreClase obj = new NombreClase();
System.out.println(NombreClase.class.getName());
System.out.println(obj.getClass().getName())
Ответ 3
Вы можете добавить .class к имени любого класса для извлечения экземпляра его объекта класса.
Когда вы используете Integer.class, вы ссылаетесь на экземпляр Class<Integer>, который является типизированным объектом класса.
Я всегда думал, что это член поля, который был добавлен компилятором, но похоже, что это действительно просто синтаксический сахар.