Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

Что такое .class?

#java #рефлексия


Constructor  constructor = User.class.getConstructor(new Class[]{String.class,String.class,String.class});
System.out.println("Constructor  "+constructor);
constructor.newInstance("Hello","From","Reflection");


Из данного примера мне понятно что при передачи конструктору создаётся Обьект массива
типа Class. 

Но вводит в заблуждение: Class.class после чего позволяется вызывать методы Reflection
API. Что означает этот .class ? 

Я знаю что для доступа к методам надо создать обьект любого класса или если метод
статичный то доступ будет произведен через имя класса.. В случае с доступом к Reflection
API не понятно это окончание .class, я могу вызвать .class у любого класса или интерфейса
или примитива int.class как JVM (если так правильно будет сказать) относится к такого
рода конструкциям ? Что это и почему оно используется ? 
    


Ответы

Ответ 1



Обращение к .class после имени типа возвращает объект типа Class. Этот объект содержит информацию о типе (будь то класс или интерфейс) и используется в тех местах, где нужно передать информацию о типе (рефлексия как один из примеров). Вызов .class на типе эквивалентен вызову getClass() на экземпляре типа. Обычно .class используется там, где нужно указать тип, но нет конкретного экземпляра этого типа. Пример для String: System.out.println(String.class.getName()); System.out.println("hello".getClass().getName()); В вашем примере в первой строке вы находите конструктор класса User, который принимает три строковых параметра. Для указания типов параметров используется String.class.

Комментариев нет:

Отправить комментарий