Класс AccessibleObject
- java.lang.Object
-
- java.lang.reflect.AccessibleObject
- Все реализованные интерфейсы:
- AnnotatedElement
- Прямые известные подклассы:
- Executable, Field
public class AccessibleObject extends Object implements AnnotatedElement
Класс AccessibleObject является базовым классом для объектов Field, Method и Constructor. Он предоставляет возможность помечать отражённый объект как подавляющий проверки доступа по умолчанию языка Java при его использовании. Проверки доступа — для публичного, по умолчанию (пакета), защищённого и приватного доступа к членам — выполняются при использовании объектов Field, Method или Constructor для установки или получения полей, вызова методов или создания и инициализации новых экземпляров классов соответственно.
Установка флага accessible в отражённом объекте позволяет сложным приложениям с достаточными привилегиями, например, сериализации объектов Java или другим механизмам сохранения, управлять объектами таким образом, как это обычно запрещено.
По умолчанию отражённый объект не является доступным.
- С момента:
- 1.2
- См. также:
-
Field,Method,Constructor,ReflectPermission
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
AccessibleObject() Конструктор: используется только виртуальной машиной Java. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
<T extends Annotation> |
getAnnotation(Class<T> annotationClass) Возвращает аннотацию данного элемента для указанного типа, если такая аннотация есть, иначе null. |
Annotation[] |
getAnnotations() Возвращает аннотации, которые имеются на данном элементе. |
<T extends Annotation> |
getAnnotationsByType(Class<T> annotationClass) Возвращает аннотации, которые ассоциированы с данным элементом. |
<T extends Annotation> |
getDeclaredAnnotation(Class<T> annotationClass) Возвращает аннотацию данного элемента для указанного типа, если такая аннотация непосредственно присутствует, иначе null. |
Annotation[] |
getDeclaredAnnotations() Возвращает аннотации, которые непосредственно присутствуют на данном элементе. |
<T extends Annotation> |
getDeclaredAnnotationsByType(Class<T> annotationClass) Возвращает аннотацию(и) данного элемента для указанного типа, если такие аннотации непосредственно присутствуют или косвенно присутствуют. |
boolean |
isAccessible() Получает значение флага |
boolean |
isAnnotationPresent(Class<? extends Annotation> annotationClass) Возвращает true, если аннотация для указанного типа имеется на данном элементе, иначе false. |
static void |
setAccessible(AccessibleObject[] array,
boolean flag) Удобный метод для установки флага |
void |
setAccessible(boolean flag) Устанавливает флаг |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
AccessibleObject
protected AccessibleObject()
Конструктор: используется только виртуальной машиной Java.
Методы
setAccessible
public static void setAccessible(AccessibleObject[] array,
boolean flag)
throws SecurityException Удобный метод для установки флага accessible для массива объектов с одной проверкой безопасности (для повышения эффективности).
Сначала, если существует менеджер безопасности, вызывается его метод checkPermission с разрешением ReflectPermission("suppressAccessChecks").
Возникает исключение SecurityException, если flag имеет значение true, но доступность любого из элементов входного array массива не может быть изменена (например, если объект элемента — объект Constructor класса Class). В случае такого SecurityException доступность объектов устанавливается в flag для элементов массива до (не включая) элемента, для которого произошло исключение; доступность элементов после (включая) элемента, для которого произошло исключение, не изменяется.
- Параметры:
-
array- массив AccessibleObjects -
flag- новое значение флагаaccessibleв каждом объекте - Исключение:
-
SecurityException- если запрос отклонен. - См. также:
-
SecurityManager.checkPermission(java.security.Permission),RuntimePermission
setAccessible
public void setAccessible(boolean flag)
throws SecurityException Установить флаг accessible для этого объекта на указанное логическое значение. Значение true указывает, что отраженный объект должен игнорировать проверки доступа языка Java при его использовании. Значение false указывает, что отраженный объект должен придерживаться проверок доступа языка Java.
Сначала, если существует менеджер безопасности, вызывается его метод checkPermission с разрешением ReflectPermission("suppressAccessChecks").
Возникает исключение SecurityException, если flag имеет значение true, но доступность этого объекта не может быть изменена (например, если этот объект элемента — объект Constructor класса Class).
Возникает исключение SecurityException, если этот объект является объектом Constructor класса java.lang.Class, и flag имеет значение true.
- Параметры:
-
flag- новое значение флагаaccessible - Исключение:
-
SecurityException- если запрос отклонен. - См. также:
-
SecurityManager.checkPermission(java.security.Permission),RuntimePermission
isAccessible
public boolean isAccessible()
Получить значение флага accessible для этого объекта.
- Возвращает:
- значение флага
accessibleобъекта
getAnnotation
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация присутствует, иначе null.
- Определено в:
-
getAnnotationв интерфейсеAnnotatedElement - Параметры типа:
-
T- тип аннотации, для которой выполняется запрос и которая возвращается, если присутствует - Параметры:
-
annotationClass- объект класса, соответствующий типу аннотации - Возвращает:
- аннотация этого элемента для указанного типа аннотации, если она присутствует в этом элементе, иначе null
- Исключение:
-
NullPointerException- если переданный класс аннотации равен null - С:
- 1.5
isAnnotationPresent
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Возвращает true, если аннотация для указанного типа присутствует в этом элементе, иначе false. Этот метод предназначен в первую очередь для удобного доступа к аннотациям-маркерам.
Возвращаемое значение этого метода эквивалентно: getAnnotation(annotationClass) != null
Текст тела метода по умолчанию указан выше.
- Определено в:
-
isAnnotationPresentв интерфейсеAnnotatedElement - Параметры:
-
annotationClass- объект класса, соответствующий типу аннотации - Возвращает:
- true, если аннотация для указанного типа аннотации присутствует в этом элементе, иначе false
- Исключение:
-
NullPointerException- если переданный класс аннотации равен null - С:
- 1.5
getAnnotationsByType
public <T extends Annotation> T[] getAnnotationsByType(Class<T> annotationClass)
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотации, связанные с этим элементом. Если аннотаций, связанных с этим элементом, нет, возвращается массив длиной 0. Различие между этим методом и AnnotatedElement.getAnnotation(Class) заключается в том, что этот метод определяет, является ли его аргумент повторяющимся типом аннотации (JLS 9.6), и в случае положительного ответа пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.
- Определено в:
-
getAnnotationsByTypeв интерфейсеAnnotatedElement - Параметры типа:
-
T- тип аннотации, для которой выполняется запрос и которая возвращается, если присутствует - Параметры:
-
annotationClass- объект класса, соответствующий типу аннотации - Возвращает:
- все аннотации этого элемента для указанного типа аннотации, если они связаны с этим элементом, иначе массив длиной ноль
- Исключение:
-
NullPointerException- если переданный класс аннотации равен null - С:
- 1.8
getAnnotations
public Annotation[] getAnnotations()
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотации, присутствующие в этом элементе. Если аннотаций, присутствующих в этом элементе, нет, возвращается массив длиной 0. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.
- Определено в:
-
getAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- аннотации, присутствующие в этом элементе
- С:
- 1.5
getDeclaredAnnotation
public <T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass)
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотацию этого элемента для указанного типа, если такая аннотация непосредственно присутствует, иначе null. Этот метод игнорирует унаследованные аннотации. (Возвращает null, если аннотации непосредственно не присутствуют в этом элементе.)
- Определено в:
-
getDeclaredAnnotationв интерфейсеAnnotatedElement - Параметры типа:
-
T- тип аннотации, для которого выполняется запрос и которая возвращается, если непосредственно присутствует - Параметры:
-
annotationClass- объект класса, соответствующий типу аннотации - Возвращает:
- аннотация этого элемента для указанного типа аннотации, если она непосредственно присутствует в этом элементе, иначе null
- Исключение:
-
NullPointerException- если переданный класс аннотации равен null - С:
- 1.8
getDeclaredAnnotationsByType
public <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotationClass)
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотации этого элемента для указанного типа, если такие аннотации либо непосредственно присутствуют, либо косвенно присутствуют. Этот метод игнорирует унаследованные аннотации. Если указанных аннотаций непосредственно или косвенно нет в этом элементе, возвращается массив длиной 0. Различие между этим методом и AnnotatedElement.getDeclaredAnnotation(Class) заключается в том, что этот метод определяет, является ли его аргумент повторяющимся типом аннотации (JLS 9.6), и в случае положительного ответа пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию, если она присутствует. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.
- Определено в:
-
getDeclaredAnnotationsByTypeв интерфейсеAnnotatedElement - Параметры типа:
-
T- тип аннотации, для которой выполняется запрос и которая возвращается, если непосредственно или косвенно присутствует - Параметры:
-
annotationClass- объект класса, соответствующий типу аннотации - Возвращает:
- все аннотации этого элемента для указанного типа аннотации, если они непосредственно или косвенно присутствуют в этом элементе, иначе массив длиной ноль
- Исключение:
-
NullPointerException- если переданный класс аннотации равен null - С:
- 1.8
getDeclaredAnnotations
public Annotation[] getDeclaredAnnotations()
Описание скопировано из интерфейса: AnnotatedElement
Возвращает аннотации, непосредственно присутствующие в этом элементе. Этот метод игнорирует унаследованные аннотации. Если аннотаций непосредственно присутствующих в этом элементе нет, возвращается массив длиной 0. Вызывающий метод свободен изменять возвращаемый массив; это не повлияет на массивы, возвращаемые другим вызывающим методам.
- Определено в:
-
getDeclaredAnnotationsв интерфейсеAnnotatedElement - Возвращает:
- аннотации, непосредственно присутствующие в этом элементе
- С:
- 1.5
© 1993, 2020, 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.