Пакет java.lang.reflect
Классы в этом пакете, наряду с java.lang.Class, поддерживают такие приложения, как отладчики, интерпретаторы, инспекторы объектов, браузеры классов и службы, такие как сериализация объектов и JavaBeans, которые нуждаются в доступе к публичным членам целевого объекта (на основе его класса во время выполнения) или к членам, объявленным данным классом.
AccessibleObject позволяет подавить проверки доступа, если доступна необходимая ReflectPermission.
Array предоставляет статические методы для динамического создания и доступа к массивам.
Моделирование языка Java и JVM в ядре рефлексии
Компоненты ядра рефлексии, которые включают типы в этом пакете, а такжеClass, Package и Module, в основном представляют модель JVM интересующих сущностей, а не модель языка программирования Java. Компилятор Java, например, javac, преобразует исходный код Java в исполняемый вывод, который можно запускать на JVM, в основном class файлы. Компиляторы языков исходного кода, отличных от Java, также могут и делают целевую JVM. Процесс преобразования, включая преобразование из исходных кодов Java в исполняемый вывод для JVM, не является взаимно однозначным отображением. Структуры, присутствующие в исходном языке, могут быть не представлены в выводе, и структуры, не присутствующие в исходном языке, могут присутствовать в выводе. Последние называются синтетическими структурами. Синтетические структуры могут включать методы, поля, параметры, классы и интерфейсы. Один конкретный вид синтетического метода — мостовой метод. Возможно, синтетическая структура не будет помечена как таковая. В частности, не все версии файлов class поддерживают пометку параметра как синтетического. Компилятор исходного языка, как правило, имеет несколько способов перевода исходной программы в представление файла class. Преобразование также может зависеть от версии формата файла class, поскольку разные версии файлов
class обладают различными возможностями и функциями. В некоторых случаях модификаторы, присутствующие в представлении файла class могут отличаться от модификаторов исходного элемента в исходном языке, включая final на параметре и protected, private, и static на классах и интерфейсах.
Помимо различий в структурном представлении между исходным языком и представлением JVM, ядро рефлексии также предоставляет информацию, специфичную для среды выполнения. Например, загрузчики классов и домены защиты объекта Class являются концепциями среды выполнения без прямого аналога в исходном коде.
- См. Спецификацию языка Java:
- 13.1 Форма двоичного файла
- См. Спецификацию виртуальной машины Java:
- 1.2 Виртуальная машина Java
4.7.8 Атрибут Synthetic
5.3.1 Загрузка с помощью загрузчика Bootstrap
5.3.2 Загрузка с помощью пользовательского загрузчика классов
- С:
- 1.1
| Класс | Описание |
|---|---|
| AccessibleObject | Класс AccessibleObject является базовым классом для объектов Field, Method, и Constructor (известных как отражённые объекты). |
| AnnotatedArrayType | AnnotatedArrayType представляет потенциально аннотированное использование типа массива, тип компонентов которого сам может представлять аннотированное использование типа. |
| AnnotatedElement | Представляет аннотированный конструкт программы, выполняемой в этой виртуальной машине. |
| AnnotatedParameterizedType | AnnotatedParameterizedType представляет потенциально аннотированное использование параметризованного типа, типы аргументов которого могут сами представлять аннотированные типы. |
| AnnotatedType | AnnotatedType представляет потенциально аннотированное использование типа в программе, выполняемой в этой виртуальной машине. |
| AnnotatedTypeVariable | AnnotatedTypeVariable представляет потенциально аннотированное использование переменной типа, объявление которой может иметь границы, которые сами представляют аннотированные типы. |
| AnnotatedWildcardType | AnnotatedWildcardType представляет потенциально аннотированное использование аргумента типа-подстановки, верхние или нижние границы которого могут сами представлять аннотированные типы. |
| Array | Класс Array предоставляет статические методы для динамического создания и доступа к массивам Java. |
| Constructor<T> | Constructor предоставляет информацию о и доступ к отдельному конструктору класса. |
| Executable | Общий базовый класс для методов Method и Constructor. |
| Field | Поле Field предоставляет информацию и динамический доступ к отдельному полю класса или интерфейса. |
| GenericArrayType | GenericArrayType представляет тип массива, тип компонента которого является либо параметризованным типом, либо переменной типа. |
| GenericDeclaration | Общий интерфейс для всех сущностей, которые объявляют переменные типа. |
| GenericSignatureFormatError | Выбрасывается, когда встречается синтаксически неправильный атрибут подписи в методе рефлексии, которому необходимо интерпретировать информацию о параметризованных типах для класса или интерфейса, метода или конструктора. |
| InaccessibleObjectException | Выбрасывается, когда проверки доступа языка Java не могут быть подавлены. |
| InvocationHandler | InvocationHandler — это интерфейс, реализуемый обработчиком вызова экземпляра прокси. |
| InvocationTargetException | InvocationTargetException — это проверяемое исключение, которое оборачивает исключение, выброшенное вызванным методом или конструктором. |
| MalformedParameterizedTypeException | Выбрасывается, когда встречается семантически неправильный параметризованный тип в методе рефлексии, который должен его инициировать. |
| MalformedParametersException | Выбрасывается, когда the
java.lang.reflect package пытается прочитать параметры метода из файла класса и определяет, что один или несколько параметров имеют неправильный формат. |
| Member | Member — это интерфейс, отражающий идентификационную информацию об одном члене (поле или методе) или конструкторе. |
| Method | Метод Method предоставляет информацию и доступ к отдельному методу класса или интерфейса. |
| Modifier | Класс Modifier предоставляет static методы и константы для декодирования модификаторов доступа к классам и членам. |
| Parameter | Информация о параметрах метода. |
| ParameterizedType | ParameterizedType представляет параметризованный тип, такой как Collection<String>. |
| Proxy | Proxy предоставляет статические методы для создания объектов, которые ведут себя как экземпляры интерфейсов, но позволяют настраивать вызов методов. |
| RecordComponent | Компонент RecordComponent предоставляет информацию и динамический доступ к компоненту класса записи. |
| ReflectPermission | Класс разрешений для операций рефлексии. |
| Type | Type — это общий базовый интерфейс для всех типов в языке программирования Java. |
| TypeVariable<D extends GenericDeclaration> | TypeVariable — это общий базовый интерфейс для переменных типа различных видов. |
| UndeclaredThrowableException | Выбрасывается методом вызова на экземпляре прокси, если метод invoke его обработчика вызова выбросил проверяемое исключение (Throwable , которое не присваивается RuntimeException или Error), которое не присваивается ни одному из типов исключений, объявленных в throws разделе метода, который был вызван на экземпляре прокси и передан обработчику вызова. |
| WildcardType | WildcardType представляет выражение типа подстановки, такое как ?, ? extends Number, или ? super Integer. |
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/reflect/package-summary.html