パッケージjava.lang.reflect
java.lang.Class
とともに、このパッケージのクラスは、デバッガ、インタプリタ、オブジェクト・インスペクタ、クラス・ブラウザなどのアプリケーション、オブジェクト直列化などのサービス、およびターゲット・オブジェクト(実行時のクラスに基づく)のpublicメンバーや指定されたクラスにより宣言されたメンバーにアクセスする必要があるJavaBeansなどを調整します。
AccessibleObject
は、必要なReflectPermission
が使用可能かどうかのアクセス・チェックの抑制を許可します。
Array
には、配列を動的に作成してアクセスするための静的メソッドが用意されています。
コア・リフレクションでのJavaプログラミング言語およびJVMモデリング
このパッケージのタイプとClass
、Package
およびModule
を含むコア・リフレクションのコンポーネントでは、Javaプログラミング言語モデルではなく、エンティティのJVMモデルを基本的に提示しています。 javac
などのJavaコンパイラは、Javaソース・コードを、主にclass
ファイルであるJVMで実行できる実行可能出力に変換します。 Java以外のソース言語のコンパイラは、JVMをターゲットにすることもできます。
Java言語ソースからJVMの実行可能出力への変換プロセスは、1対1のマッピングではありません。 ソース言語に存在する構造は出力に表示されず、ソース言語に存在しない構造が出力に存在する場合があります。 後者はsynthetic構造と呼ばれます。 合成構造には、methods、fields、parameters、「クラスとインタフェース」が含まれます。 「ブリッジ・メソッド」は、特に合成メソッドの1つです。 合成構造にマークされていない可能性があります。 特に、すべてのclass
ファイルのバージョンでは、パラメータを合成としてマークすることがサポートされているわけではありません。 通常、ソース言語コンパイラには、ソース・プログラムをclass
ファイル表現に変換するための複数の方法があります。 翻訳は、異なる class
ファイル・バージョンとしてターゲット指定されているclass
ファイル・フォーマットのバージョンによって異なる機能や機能を持つ場合もあります。 class
ファイル表現に存在する修飾子は、parameterのfinal
、protected
、private
、「クラスとインタフェース」の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
クラスは、Field
、Method
、およびConstructor
オブジェクト(「反射物」と呼ばれる)の基本クラスです。AnnotatedArrayType
は、それ自体が型の注釈付きの使用を表すことができるコンポーネント型を持つ配列の型の潜在的に注釈付きの使用を表します。このVMで現在実行されているプログラムの注釈付きコンストラクトを表します。AnnotatedParameterizedType
は、それ自体が型の注釈付きの使用を表すことができる型引数を持つパラメータ化された型の潜在的に注釈付きの使用を表します。AnnotatedType
は、このVMで現在実行されているプログラムの型の潜在的に注釈付きの使用を表します。AnnotatedTypeVariable
は、それ自体が型の注釈付きの使用を表す境界を設定できる宣言を持つ型変数の、潜在的に注釈付きの使用を表します。AnnotatedWildcardType
は、それ自体が型の注釈付きの使用を表すことができる上限または下限を持つワイルドカード型引数の、潜在的に注釈付きの使用を表します。Array
クラスは、Java配列を動的に作成してアクセスするためのstaticメソッドを提供します。Java仮想マシンのクラス・ファイル形式のバージョン。Constructor<T>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<D extends GenericDeclaration>TypeVariableは、型変数の種類の共通のスーパー・インタフェースです。呼出しハンドラのinvoke
メソッドが、プロキシ・インスタンスで呼び出され、呼出しハンドラにディスパッチされたメソッドのthrows
節で宣言されたどの例外タイプにも割当てできないチェック例外(RuntimeException
またはError
に割当てできないThrowable
)をスローした場合、プロキシ・インスタンスのメソッド呼出しによってスローされます。WildcardTypeはワイルドカード型の式(?
、? extends Number
、? super Integer
など)を表します。