モジュール java.base

パッケージjava.lang.reflect


パッケージjava.lang.reflect
クラスとオブジェクトに関するリフレクト情報を取得するための、クラスとインタフェースを提供します。 反射によって、ロードされたクラスのフィールド、メソッドおよびコンストラクタに関する情報へのプログラム的なアクセス、および反射型フィールド、メソッドおよびコンストラクタの使用が、カプセル化およびセキュリティ制限内で基礎となる対応するものに対して行われます。

java.lang.Classとともに、このパッケージのクラスは、デバッガ、インタプリタ、オブジェクト・インスペクタ、クラス・ブラウザなどのアプリケーション、オブジェクト直列化などのサービス、およびターゲット・オブジェクト(実行時のクラスに基づく)のpublicメンバーや指定されたクラスにより宣言されたメンバーにアクセスする必要があるJavaBeansなどを調整します。

AccessibleObjectは、必要なReflectPermissionが使用可能かどうかのアクセス・チェックの抑制を許可します。

Arrayには、配列を動的に作成してアクセスするための静的メソッドが用意されています。

コア・リフレクションでのJavaプログラミング言語およびJVMモデリング

このパッケージのタイプとClassPackageおよびModuleを含むコア・リフレクションのコンポーネントでは、Javaプログラミング言語モデルではなく、エンティティのJVMモデルを基本的に提示しています。 javacなどのJavaコンパイラは、Javaソース・コードを、主にclassファイルであるJVMで実行できる実行可能出力に変換します。 Java以外のソース言語のコンパイラは、JVMをターゲットにすることもできます。

Java言語ソースからJVMの実行可能出力への変換プロセスは、1対1のマッピングではありません。 ソース言語に存在する構造は出力に表示されず、ソース言語に存在しない構造が出力に存在する場合があります。 後者はsynthetic構造と呼ばれます。 合成構造には、methodsfieldsparameters「クラスとインタフェース」が含まれます。 「ブリッジ・メソッド」は、特に合成メソッドの1つです。 合成構造にマークされていない可能性があります。 特に、すべてのclassファイルのバージョンでは、パラメータを合成としてマークすることがサポートされているわけではありません。 通常、ソース言語コンパイラには、ソース・プログラムをclassファイル表現に変換するための複数の方法があります。 翻訳は、異なる classファイル・バージョンとしてターゲット指定されているclassファイル・フォーマットのバージョンによって異なる機能や機能を持つ場合もあります。 classファイル表現に存在する修飾子は、parameterfinalprotectedprivate「クラスとインタフェース」staticなど、ソース言語の元要素の修飾子とは異なる場合があります。

ソース言語とJVM表現間の構造表現の違いに加え、コア反射によってランタイム固有の情報が公開されます。 たとえば、Class「クラス・ローダー」および「保護ドメイン」は、ソース・コードで直接アナ・ログのないランタイム概念です。

Java言語仕様を参照してください:
13.1 バイナリの形式
Java Virtual Machine仕様を参照してください:
1.2 The Java Virtual Machine
「4.7.8 合成属性」
「5.3.1 ブートストラップ・クラス・ローダーを使用したロード」
「5.3.2 ユーザー定義クラス・ローダーを使用したロード」
導入されたバージョン:
1.1
  • クラス
    説明
    AccessibleObjectクラスは、FieldMethod、およびConstructorオブジェクト(「リフレクトされたオブジェクト」と呼ばれる)の基本クラスです。
    AnnotatedArrayTypeは、それ自体が型の注釈付きの使用を表すことができるコンポーネント型を持つ配列の型の潜在的に注釈付きの使用を表します。
    このVMで現在実行されているプログラムの注釈付きコンストラクトを表します。
    AnnotatedParameterizedTypeは、それ自体が型の注釈付きの使用を表すことができる型引数を持つパラメータ化された型の潜在的に注釈付きの使用を表します。
    AnnotatedTypeは、このVMで現在実行されているプログラムの型の潜在的に注釈付きの使用を表します。
    AnnotatedTypeVariableは、それ自体が型の注釈付きの使用を表す境界を設定できる宣言を持つ型変数の、潜在的に注釈付きの使用を表します。
    AnnotatedWildcardTypeは、それ自体が型の注釈付きの使用を表すことができる上限または下限を持つワイルドカード型引数の、潜在的に注釈付きの使用を表します。
    Arrayクラスは、Java配列を動的に作成してアクセスするためのstaticメソッドを提供します。
    Constructorは、クラスの単一コンストラクタについての情報と単一コンストラクタへのアクセスを提供します。
    MethodおよびConstructorに共通する機能のための共有スーパークラス。
    Fieldは、クラスまたはインタフェースについての情報、それらへの動的なアクセス、その単一フィールドを提供します。
    GenericArrayTypeは、パラメータ化された型または型変数のどちらかであるコンポーネント型を持つ配列の型を表します。
    型変数を宣言するすべてのエンティティの共通インタフェースです。
    クラスまたはインタフェース、メソッド、またはコンストラクタのジェネリック・シグネチャ情報を解釈する必要があるリフレクション・メソッドが、構文的に不正なシグネチャ属性を検出した場合にスローされます。
    Java言語のアクセス・チェックを抑制できない場合にスローされます。
    InvocationHandlerは、プロキシ・インスタンスの呼出しハンドラが実装するインタフェースです。
    InvocationTargetExceptionは、呼び出されるメソッドまたはコンストラクタがスローする例外をラップする、チェック例外です。
    セマンティックス的に不正なパラメータ化された型が、型のインスタンス化を必要とするリフレクト・メソッドにより検出された場合にスローされます。
    java.lang.reflectパッケージがクラス・ファイルからメソッド・パラメータの読取りを試みて、1つ以上のパラメータの型式が不正であると判断した場合にスローされます。
    Memberは、1つのメンバー(フィールドやメソッド)やコンストラクタに関する識別情報をリフレクトするインタフェースです。
    Methodは、クラスまたはインタフェース上の単一のメソッドに関する情報とそのアクセスを提供します。
    Modifierクラスは、クラスやメンバーのアクセス修飾子を復号化するためのstaticメソッドや定数を提供します。
    メソッド・パラメータに関する情報。
    ParameterizedTypeは、Collection<String>などのパラメータ化された型を表します。
    Proxyは、インタフェースのインスタンスのように動作するが、カスタマイズされたメソッド呼び出しを可能にするオブジェクトを作成する静的メソッドを提供します。
    RecordComponentは、レコード・クラスのコンポーネントに関する情報および動的アクセスを提供します。
    リフレクト処理のPermissionクラスです。
    Typeは、Javaプログラミング言語のすべての型の共通するスーパー・インタフェースです。
    TypeVariableは、型変数の種類の共通のスーパー・インタフェースです。
    呼出しハンドラのinvokeメソッドが、プロキシ・インスタンスで呼び出され、呼出しハンドラにディスパッチされたメソッドのthrows節で宣言されたどの例外タイプにも割当てできないチェック例外(RuntimeExceptionまたはErrorに割当てできないThrowable)をスローした場合、プロキシ・インスタンスのメソッド呼出しによってスローされます。
    WildcardTypeはワイルドカード型の式(?? extends Number? super Integerなど)を表します。