public class AccessibleObject extends Object implements AnnotatedElement
リフレクトされたオブジェクトでaccessible
フラグを設定すると、十分な特権を持つ高度なアプリケーション(Javaのオブジェクトの直列化やその他の持続性メカニズムなど)は、通常は禁止されている方法でオブジェクトを操作できます。
デフォルトでは、リフレクトされたオブジェクトはアクセス可能ではありません。
Field
, Method
, Constructor
, ReflectPermission
修飾子 | コンストラクタと説明 |
---|---|
protected |
AccessibleObject()
コンストラクタで、Java仮想マシン(JVM)だけが使用します。
|
修飾子と型 | メソッドと説明 |
---|---|
<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()
このオブジェクトの
accessible フラグの値を取得します。 |
boolean |
isAnnotationPresent(Class<? extends Annotation> annotationClass)
指定された型の注釈がこの要素に存在する場合はtrueを返し、そうでない場合はfalseを返します。
|
static void |
setAccessible(AccessibleObject[] array, boolean flag)
効率を良くするために、単一のセキュリティ・チェックにより、オブジェクトの配列の
accessible フラグを設定する簡易メソッドです。 |
void |
setAccessible(boolean flag)
このオブジェクトの
accessible フラグを、指定されたboolean値に設定します。 |
public static void setAccessible(AccessibleObject[] array, boolean flag) throws SecurityException
accessible
フラグを設定する簡易メソッドです。
まず、セキュリティ・マネージャが存在する場合は、そのcheckPermission
メソッドがReflectPermission("suppressAccessChecks")
アクセス権で呼び出されます。
flag
がtrue
の場合、SecurityException
がスローされますが、入力array
の要素のアクセス可能性は変わらないことがあります(たとえば、要素オブジェクトがClass
クラスのConstructor
オブジェクトである場合)。このようなSecurityExceptionのイベントの場合、オブジェクトへのアクセス可能性は、例外が生じた要素の直前までの配列要素についてはflag
に設定されます。例外が生じた要素以降の要素へのアクセシビリティは変更されません。
array
- AccessibleObjectの配列flag
- 各オブジェクトのaccessible
フラグの新しい値SecurityException
- 要求が拒否された場合。SecurityManager.checkPermission(java.security.Permission)
, RuntimePermission
public void setAccessible(boolean flag) throws SecurityException
accessible
フラグを、指定されたboolean値に設定します。値true
は、リフレクトされたオブジェクトの使用時に、Java言語アクセス・チェックが抑制されることを示します。値false
は、リフレクトされたオブジェクトがJava言語アクセス・チェックを実施することを示します。
まず、セキュリティ・マネージャが存在する場合は、そのcheckPermission
メソッドがReflectPermission("suppressAccessChecks")
アクセス権で呼び出されます。
flag
がtrue
の場合、SecurityException
がスローされますが、このオブジェクトのアクセス可能性は変わらないことがあります(たとえば、この要素オブジェクトがClass
クラスのConstructor
オブジェクトである場合)。
このオブジェクトがjava.lang.Class
クラスのConstructor
オブジェクトであり、flag
がtrueである場合、SecurityException
がスローされます。
flag
- accessible
フラグの新しい値SecurityException
- 要求が拒否された場合。SecurityManager.checkPermission(java.security.Permission)
, RuntimePermission
public boolean isAccessible()
accessible
フラグの値を取得します。accessible
フラグの値public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
AnnotatedElement
getAnnotation
、インタフェース: AnnotatedElement
T
- 照会し、存在する場合に返す注釈の型。annotationClass
- 注釈型に対応するClassオブジェクトNullPointerException
- 指定された注釈クラスがnullの場合public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
このメソッドによって返されるtrue値は、getAnnotation(annotationClass) != null
と同等です。
デフォルト・メソッドの本体は、前述のコードとして指定されています。
isAnnotationPresent
、インタフェース: AnnotatedElement
annotationClass
- 注釈型に対応するClassオブジェクトNullPointerException
- 指定された注釈クラスがnullの場合public <T extends Annotation> T[] getAnnotationsByType(Class<T> annotationClass)
AnnotatedElement
AnnotatedElement.getAnnotation(Class)
の違いは、このメソッドではその引数が繰返し可能な注釈型 (JLS 9.6)であるかどうかが検出され、繰返し可能な注釈型である場合は、コンテナ注釈を調べることで、その型の1つ以上の注釈の検索が試みられることです。このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。getAnnotationsByType
、インタフェース: AnnotatedElement
T
- 照会し、存在する場合に返す注釈の型。annotationClass
- 注釈型に対応するClassオブジェクトNullPointerException
- 指定された注釈クラスがnullの場合public Annotation[] getAnnotations()
AnnotatedElement
getAnnotations
、インタフェース: AnnotatedElement
public <T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass)
AnnotatedElement
getDeclaredAnnotation
、インタフェース: AnnotatedElement
T
- 照会し、直接存在する場合に返す注釈の型。annotationClass
- 注釈型に対応するClassオブジェクトNullPointerException
- 指定された注釈クラスがnullの場合public <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotationClass)
AnnotatedElement
AnnotatedElement.getDeclaredAnnotation(Class)
の違いは、このメソッドではその引数が繰返し可能な注釈型 (JLS 9.6)であるかどうかが検出され、繰返し可能な注釈型である場合は、コンテナ注釈(存在する場合)を調べることで、その型の1つ以上の注釈の検索が試みられることです。このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。getDeclaredAnnotationsByType
、インタフェース: AnnotatedElement
T
- 照会し、直接または間接的に存在する場合に返す注釈の型。annotationClass
- 注釈型に対応するClassオブジェクトNullPointerException
- 指定された注釈クラスがnullの場合public Annotation[] getDeclaredAnnotations()
AnnotatedElement
getDeclaredAnnotations
、インタフェース: AnnotatedElement
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.