public class AccessibleObject
extends Object
implements AnnotatedElement
java.lang.Object | |
↳ | java.lang.reflect.AccessibleObject |
Known Direct Subclasses
|
AccessibleObject类是Field,Method和Constructor对象的基类。 它提供了将反射对象标记为在使用时禁止默认Java语言访问控制检查的功能。 当使用Fields,Methods或Constructors来设置或获取字段,调用方法,或者创建和初始化类的新实例时,执行对公共,默认(包)访问,受保护和私有成员的访问检查, 分别。
在反射对象中设置 accessible
标志允许具有足够权限的复杂应用程序(如Java Object Serialization或其他持久性机制)以通常禁止的方式操作对象。
默认情况下,反射对象 不可访问。
也可以看看:
Protected constructors |
|
---|---|
AccessibleObject() 构造函数:仅供Java虚拟机使用。 |
Public methods |
|
---|---|
<T extends Annotation> T |
getAnnotation(Class<T> annotationClass) 如果存在这样的注释,则返回指定类型的此元素的注释,否则返回null。 |
Annotation[] |
getAnnotations() 返回此元素上的所有注释。 |
Annotation[] |
getDeclaredAnnotations() 返回直接出现在此元素上的所有注释。 |
boolean |
isAccessible() 获取此对象的 |
void |
setAccessible(boolean flag) 将此对象的 |
static void |
setAccessible(AccessibleObject[] array, boolean flag) 便捷方法通过一次安全检查为一组对象设置 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface java.lang.reflect.AnnotatedElement
|
T getAnnotation (Class<T> annotationClass)
如果存在这样的注释,则返回指定类型的此元素的注释,否则返回null。
Parameters | |
---|---|
annotationClass |
Class : the Class object corresponding to the annotation type |
Returns | |
---|---|
T |
this element's annotation for the specified annotation type if present on this element, else null |
Throws | |
---|---|
NullPointerException |
Annotation[] getAnnotations ()
返回此元素上的所有注释。 (如果此元素没有注释,则返回长度为零的数组。)此方法的调用方可自由修改返回的数组; 它将不会影响返回给其他调用者的数组。
Returns | |
---|---|
Annotation[] |
all annotations present on this element |
Annotation[] getDeclaredAnnotations ()
返回直接出现在此元素上的所有注释。 与此接口中的其他方法不同,此方法会忽略继承的注释。 (如果此元素上没有注释,则返回长度为零的数组。)此方法的调用方可自由修改返回的数组; 它将不会影响返回给其他调用者的数组。
Returns | |
---|---|
Annotation[] |
All annotations directly present on this element |
boolean isAccessible ()
获取此对象的 accessible
标志的值。
Returns | |
---|---|
boolean |
the value of the object's accessible flag |
void setAccessible (boolean flag)
将此对象的accessible
标志设置为指定的布尔值。 值为true
表示反射对象在使用时应禁止Java语言访问检查。 值为false
表示反射对象应执行Java语言访问检查。
首先,如果有安全管理器,则其 checkPermission
方法被调用并具有 ReflectPermission("suppressAccessChecks")
权限。
如果 flag
为 SecurityException
则引发 true
但可以不更改此对象的可访问性(例如,如果此元素对象是类 Class
的 Constructor
对象)。
一个 SecurityException
如果这个对象是提高 Constructor
对象类 java.lang.Class
,并且 flag
是真的。
Parameters | |
---|---|
flag |
boolean : the new value for the accessible flag |
Throws | |
---|---|
SecurityException |
if the request is denied. |
void setAccessible (AccessibleObject[] array, boolean flag)
便捷方法通过一次安全检查为一组对象设置 accessible
标志(以提高效率)。
首先,如果有安全管理器,则其 checkPermission
方法被调用并具有 ReflectPermission("suppressAccessChecks")
权限。
如果flag
为SecurityException
则引发true
但输入array
的任何元素的可访问性不得更改(例如,如果元素对象是类Class
的Constructor
对象)。 如果出现这种SecurityException,则对于发生异常的元素(排除)的数组元素,对象的可访问性设置为flag
; 超出(并包括)发生异常的元素的元素的可访问性不变。
Parameters | |
---|---|
array |
AccessibleObject : the array of AccessibleObjects |
flag |
boolean : the new value for the accessible flag in each object |
Throws | |
---|---|
SecurityException |
if the request is denied. |