Spec-Zone.ru › OpenJDK 17

Пакет 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.
Класс Описание
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

Spec-Zone.ru

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