public class AccessibleObject extends Objectimplements AnnotatedElement
Setting the accessible flag in a reflected object permits sophisticated applications with sufficient privilege, such as Java Object Serialization or other persistence mechanisms, to manipulate objects in a manner that would normally be prohibited.
By default, a reflected object is not accessible.
Field,
Method,
Constructor,
ReflectPermission
| Modifier | Constructor and Description |
|---|---|
protected |
AccessibleObject()
Constructor: only used by the Java Virtual Machine.
|
| Modifier and Type | Method and Description |
|---|---|
<T extends Annotation |
getAnnotation(Class
Returns this element's annotation for the specified type if such an annotation is
present, else null.
|
Annotation |
getAnnotations()
Returns annotations that are
present on this element.
|
<T extends Annotation |
getAnnotationsByType(Class
Returns annotations that are
associated with this element.
|
<T extends Annotation |
getDeclaredAnnotation(Class
Returns this element's annotation for the specified type if such an annotation is
directly present, else null.
|
Annotation |
getDeclaredAnnotations()
Returns annotations that are
directly present on this element.
|
<T extends Annotation |
getDeclaredAnnotationsByType(Class
Returns this element's annotation(s) for the specified type if such annotations are either
directly present or
indirectly present.
|
boolean |
isAccessible()
Get the value of the
accessible flag for this object.
|
boolean |
isAnnotationPresent(Class
Returns true if an annotation for the specified type is
present on this element, else false.
|
static void |
setAccessible(AccessibleObject
Convenience method to set the
accessible flag for an array of objects with a single security check (for efficiency).
|
void |
setAccessible(boolean flag)
Set the
accessible flag for this object to the indicated boolean value.
|
protected AccessibleObject()
public static void setAccessible(AccessibleObject[] array, boolean flag) throws SecurityException
accessible flag for an array of objects with a single security check (for efficiency).
First, if there is a security manager, its checkPermission method is called with a ReflectPermission("suppressAccessChecks") permission.
A SecurityException is raised if flag is true but accessibility of any of the elements of the input array may not be changed (for example, if the element object is a Constructor object for the class Class). In the event of such a SecurityException, the accessibility of objects is set to flag for array elements upto (and excluding) the element for which the exception occurred; the accessibility of elements beyond (and including) the element for which the exception occurred is unchanged.
array - the array of AccessibleObjects
flag - the new value for the
accessible flag in each object
SecurityException - if the request is denied.
SecurityManager.checkPermission(java.security.Permission) ,
RuntimePermission
public void setAccessible(boolean flag)
throws SecurityException
accessible flag for this object to the indicated boolean value. A value of
true indicates that the reflected object should suppress Java language access checking when it is used. A value of
false indicates that the reflected object should enforce Java language access checks.
First, if there is a security manager, its checkPermission method is called with a ReflectPermission("suppressAccessChecks") permission.
A SecurityException is raised if flag is true but accessibility of this object may not be changed (for example, if this element object is a Constructor object for the class Class).
A SecurityException is raised if this object is a Constructor object for the class java.lang.Class, and flag is true.
flag - the new value for the
accessible flag
SecurityException - if the request is denied.
SecurityManager.checkPermission(java.security.Permission) ,
RuntimePermission
public boolean isAccessible()
accessible flag for this object.
accessible flag
public <T extends Annotation> T getAnnotation(Class <T> annotationClass)
AnnotatedElement
getAnnotation in interface
AnnotatedElement
T - the type of the annotation to query for and return if present
annotationClass - the Class object corresponding to the annotation type
NullPointerException - if the given annotation class is null
public boolean isAnnotationPresent(Class<? extends Annotation > annotationClass)
The truth value returned by this method is equivalent to: getAnnotation(annotationClass) != null
The body of the default method is specified to be the code above.
isAnnotationPresent in interface
AnnotatedElement
annotationClass - the Class object corresponding to the annotation type
NullPointerException - if the given annotation class is null
public <T extends Annotation> T[] getAnnotationsByType(Class <T> annotationClass)
AnnotatedElement
AnnotatedElement.getAnnotation(Class) is that this method detects if its argument is a
repeatable annotation type (JLS 9.6), and if so, attempts to find one or more annotations of that type by "looking through" a container annotation. The caller of this method is free to modify the returned array; it will have no effect on the arrays returned to other callers.
getAnnotationsByType in interface
AnnotatedElement
T - the type of the annotation to query for and return if present
annotationClass - the Class object corresponding to the annotation type
NullPointerException - if the given annotation class is null
public Annotation[] getAnnotations()
AnnotatedElement
getAnnotations in interface
AnnotatedElement
public <T extends Annotation> T getDeclaredAnnotation(Class <T> annotationClass)
AnnotatedElement
getDeclaredAnnotation in interface
AnnotatedElement
T - the type of the annotation to query for and return if directly present
annotationClass - the Class object corresponding to the annotation type
NullPointerException - if the given annotation class is null
public <T extends Annotation> T[] getDeclaredAnnotationsByType(Class <T> annotationClass)
AnnotatedElement
AnnotatedElement.getDeclaredAnnotation(Class) is that this method detects if its argument is a
repeatable annotation type (JLS 9.6), and if so, attempts to find one or more annotations of that type by "looking through" a container annotation if one is present. The caller of this method is free to modify the returned array; it will have no effect on the arrays returned to other callers.
getDeclaredAnnotationsByType in interface
AnnotatedElement
T - the type of the annotation to query for and return if directly or indirectly present
annotationClass - the Class object corresponding to the annotation type
NullPointerException - if the given annotation class is null
public Annotation[] getDeclaredAnnotations()
AnnotatedElement
getDeclaredAnnotations in interface
AnnotatedElement