Страницы

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

понедельник, 29 апреля 2019 г.

Что такое .class?

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 (если так правильно будет сказать) относится к такого рода конструкциям ? Что это и почему оно используется ?


Ответ

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

В вашем примере в первой строке вы находите конструктор класса User, который принимает три строковых параметра. Для указания типов параметров используется String.class

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

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