モジュール 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