public class AccessibleObject extends Object implements AnnotatedElement
リフレクトされたオブジェクトでaccessibleフラグを設定すると、十分な特権を持つ高度なアプリケーション(Javaのオブジェクトの直列化やその他の持続性メカニズムなど)は、通常は禁止されている方法でオブジェクトを操作できます。
デフォルトでは、リフレクトされたオブジェクトはアクセス可能ではありません。
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() |
このオブジェクトの
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), RuntimePermissionpublic 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), RuntimePermissionpublic boolean isAccessible()
accessibleフラグの値を取得します。accessibleフラグの値public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
AnnotatedElementgetAnnotation、インタフェースAnnotatedElementT - 照会し、存在する場合に返す注釈の型。annotationClass - 注釈型に対応するClassオブジェクトNullPointerException - 指定された注釈クラスがnullの場合public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
このメソッドによって返されるtrue値は、getAnnotation(annotationClass) != nullと同等です。
デフォルト・メソッドの本体は、前述のコードとして指定されています。
isAnnotationPresent、インタフェースAnnotatedElementannotationClass - 注釈型に対応するClassオブジェクトNullPointerException - 指定された注釈クラスがnullの場合public <T extends Annotation> T[] getAnnotationsByType(Class<T> annotationClass)
AnnotatedElementAnnotatedElement.getAnnotation(Class)の違いは、このメソッドではその引数が繰返し可能な注釈型 (JLS 9.6)であるかどうかが検出され、繰返し可能な注釈型である場合は、コンテナ注釈を調べることで、その型の1つ以上の注釈の検索が試みられることです。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。 getAnnotationsByType、インタフェースAnnotatedElementT - 照会し、存在する場合に返す注釈の型。annotationClass - 注釈型に対応するClassオブジェクトNullPointerException - 指定された注釈クラスがnullの場合public Annotation[] getAnnotations()
AnnotatedElementgetAnnotations、インタフェースAnnotatedElementpublic <T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass)
AnnotatedElementgetDeclaredAnnotation、インタフェースAnnotatedElementT - 照会し、直接存在する場合に返す注釈の型。annotationClass - 注釈型に対応するClassオブジェクトNullPointerException - 指定された注釈クラスがnullの場合public <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotationClass)
AnnotatedElementAnnotatedElement.getDeclaredAnnotation(Class)の違いは、このメソッドではその引数が繰返し可能な注釈型 (JLS 9.6)であるかどうかが検出され、繰返し可能な注釈型である場合は、コンテナ注釈(存在する場合)を調べることで、その型の1つ以上の注釈の検索が試みられることです。 このメソッドの呼出し元は、返された配列を自由に変更することができ、これはほかの呼出し元に返された配列に影響を及ぼしません。 getDeclaredAnnotationsByType、インタフェースAnnotatedElementT - 照会し、直接または間接的に存在する場合に返す注釈の型。annotationClass - 注釈型に対応するClassオブジェクトNullPointerException - 指定された注釈クラスがnullの場合public Annotation[] getDeclaredAnnotations()
AnnotatedElementgetDeclaredAnnotations、インタフェースAnnotatedElement バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。