Spec-Zone.ru › OpenJDK 8

Класс 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>
T
getAnnotation(Class<T> annotationClass)

Возвращает аннотацию данного элемента для указанного типа, если такая аннотация есть, иначе null.

Annotation[] getAnnotations()

Возвращает аннотации, которые имеются на данном элементе.

<T extends Annotation>
T[]
getAnnotationsByType(Class<T> annotationClass)

Возвращает аннотации, которые ассоциированы с данным элементом.

<T extends Annotation>
T
getDeclaredAnnotation(Class<T> annotationClass)

Возвращает аннотацию данного элемента для указанного типа, если такая аннотация непосредственно присутствует, иначе null.

Annotation[] getDeclaredAnnotations()

Возвращает аннотации, которые непосредственно присутствуют на данном элементе.

<T extends Annotation>
T[]
getDeclaredAnnotationsByType(Class<T> annotationClass)

Возвращает аннотацию(и) данного элемента для указанного типа, если такие аннотации непосредственно присутствуют или косвенно присутствуют.

boolean isAccessible()

Получает значение флага accessible для данного объекта.

boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)

Возвращает true, если аннотация для указанного типа имеется на данном элементе, иначе false.

static void setAccessible(AccessibleObject[] array, boolean flag)

Удобный метод для установки флага accessible для массива объектов с одной проверкой безопасности (для повышения эффективности).

void setAccessible(boolean flag)

Устанавливает флаг accessible для данного объекта на указанное булево значение.

Методы, унаследованные от класса 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.

Spec-Zone.ru

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