Spec-Zone.ru › OpenJDK 21

Пакет java.lang.reflect

package 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
Пакет Описание
java.lang
Предоставляет классы, являющиеся фундаментальными для разработки на языке Java.
Класс Описание
AccessFlag
Представляет флаг доступа JVM или флаг, связанный с модулем, для временного элемента, например, класс, поле или метод.
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API