Spec-Zone.ru › OpenJDK 25

Пакет java.lang.reflect

package java.lang.reflect
Предоставляет классы и интерфейсы для получения рефлексивной информации о классах и объектах. Рефлексия обеспечивает программный доступ к информации о полях, методах и конструкторах загруженных классов, а также позволяет использовать отражённые поля, методы и конструкторы для работы с соответствующими им элементами с учётом ограничений инкапсуляции и безопасности.

Классы этого пакета вместе с java.lang.Class подходят для таких приложений, как отладчики, интерпретаторы, инспекторы объектов, обозреватели классов, а также для таких служб, как сериализация объектов и JavaBeans, которым необходим доступ либо к открытым членам целевого объекта (на основе его класса во время выполнения), либо к членам, объявленным заданным классом.

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 Загрузка с помощью загрузчика классов начальной загрузки
5.3.2 Загрузка с помощью загрузчика классов, определённого пользователем
С версии:
1.1
Пакет Описание
java.lang
Предоставляет классы, лежащие в основе языка программирования Java.
Класс Описание
AccessFlag
Представляет флаг доступа JVM или флаг, связанный с модулем, у элемента во время выполнения, например у класса, поля или метода.
AccessFlag.Location
Место в файле class, где могут применяться флаги.
AccessibleObject
Класс AccessibleObject является базовым классом для объектов Field, Method и Constructor (известных как отражённые объекты).
AnnotatedArrayType
AnnotatedArrayType представляет потенциально аннотированное использование типа массива, тип компонента которого сам может представлять аннотированное использование типа.
AnnotatedElement
Представляет аннотированную конструкцию выполняющейся в данный момент программы в этой VM.
AnnotatedParameterizedType
AnnotatedParameterizedType представляет потенциально аннотированное использование параметризованного типа, аргументы типа которого сами могут представлять аннотированные использования типов.
AnnotatedType
AnnotatedType представляет потенциально аннотированное использование типа в выполняющейся в данный момент программе в этой VM.
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 Устарел, планируется удаление: этот элемент API может быть удалён в будущей версии.
Это разрешение нельзя использовать для управления доступом к ресурсам, поскольку Security Manager больше не поддерживается.
Type
Type — это общий суперинтерфейс для всех типов языка программирования Java.
TypeVariable<D extends GenericDeclaration>
TypeVariable — это общий суперинтерфейс для переменных типов различных видов.
UndeclaredThrowableException
Выбрасывается при вызове метода экземпляра прокси, если метод invoke его обработчика вызова выбрасывает проверяемое исключение (Throwable, которое не является подклассом RuntimeException или Error), не относящееся ни к одному из типов исключений, объявленных в предложении throws метода, вызванного на экземпляре прокси и переданного обработчику вызова.
WildcardType
WildcardType представляет выражение типа-шаблона, например ?, ? extends Number или ? super Integer.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/lang/reflect/package-summary.html

Spec-Zone.ru

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