Пакет 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
| Класс | Описание |
|---|---|
| AccessFlag | |
| AccessFlag.Location | Расположение внутри файла класса, где можно применить флаги. |
| AccessibleObject | Класс AccessibleObject является базовым классом для Field, Method, и Constructor объектов (известных как отражённые объекты). |
| AnnotatedArrayType | AnnotatedArrayType представляет потенциально аннотированное использование типа массива, тип компонента которого сам может представлять аннотированное использование типа. |
| AnnotatedElement | Представляет аннотированный конструкт программы, выполняемой в данной виртуальной машине. |
| AnnotatedParameterizedType | AnnotatedParameterizedType представляет потенциально аннотированное использование параметризованного типа, аргументы типа которого сами могут представлять аннотированное использование типов. |
| AnnotatedType | AnnotatedType представляет потенциально аннотированное использование типа в программе, выполняемой в данной виртуальной машине. |
| AnnotatedTypeVariable | AnnotatedTypeVariable представляет потенциально аннотированное использование переменной типа, объявление которой может иметь границы, которые сами представляют аннотированные использования типов. |
| AnnotatedWildcardType | AnnotatedWildcardType представляет потенциально аннотированное использование аргумента типа-дикой карты, верхние или нижние границы которого сами могут представлять аннотированные использования типов. |
| Array | Класс Array предоставляет статические методы для динамического создания и доступа к массивам Java. |
| ClassFileFormatVersion | Версии формата файла класса виртуальной машины 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, 2023, 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/21/docs/api/java.base/java/lang/reflect/package-summary.html