モジュール java.base
パッケージ java.lang.reflect

クラスAccessibleObject

java.lang.Object
java.lang.reflect.AccessibleObject
すべての実装されたインタフェース:
AnnotatedElement
直系の既知のサブクラス:
Executable, Field

public class AccessibleObject extends Object implements AnnotatedElement
AccessibleObjectクラスは、FieldMethod、およびConstructorオブジェクト(「反映されたオブジェクト」と呼ばれる)の基本クラスです。 Java言語アクセス制御の使用時に、反映されたオブジェクトにJava言語アクセス制御の抑制チェックとしてフラグを付けることができます。 これにより、Javaオブジェクト直列化やその他の永続性メカニズムなど、十分な権限を持つ高度なアプリケーションが、通常禁止される方法でオブジェクトを操作できます。

Java言語アクセス制御では、トップレベル・クラス外部のプライベート・メンバー、パッケージ・アクセス外部のメンバー、パッケージまたはサブクラス外の保護されたメンバー、およびそれらがexportedパッケージとユーザーreadsモジュールで宣言されていないかぎり、そのモジュール外のパブリック・メンバーを使用できません。 デフォルトでは、Field s、Method sまたはConstructor sを使用してフィールドを取得または設定したり、メソッドを起動したり、クラスの新しいインスタンスを作成および初期化したりする場合、Java言語アクセス制御は(1つのバリエーションで)に適用されます。 すべての反映されたオブジェクトは、それを使用するコードが適切なクラス、パッケージまたはモジュール内にあることをチェックします。 スタック上にJavaクラスがない「JNIコード」により起動された場合のチェックは、メンバーと宣言しているクラスがパブリックであり、すべてのモジュールにエクスポートされるパッケージ内にクラスがある場合にのみ成功します。

Java言語アクセス制御の1つのバリエーションは、反映されたオブジェクトによるチェックが可読性を前提としていることです。 つまり、反映されたオブジェクトの使用を含むモジュールは、基礎となるフィールド、メソッドまたはコンストラクタが宣言されているモジュールを読み取るものとみなされます。

Java言語のアクセス制御のためのチェックが(したがって、アクセスを有効にできるかどうか)を抑制することができるかどうかは、反射されたオブジェクトは、エクスポートまたはオープン・パッケージ(setAccessible(boolean)を参照してください)のメンバーに対応するかどうかに依存します。

Java言語仕様を参照してください:
6.6 アクセス制御
導入されたバージョン:
1.2
外部仕様