クラス・ファイルAPI
クラス・ファイルAPIは、Javaクラス・ファイルの解析、生成および変換に使用されるパッケージjava.lang.classfile
で定義されます。APIは、Java仮想マシン仕様のclass
ファイル形式に関する章で定義されているclass
ファイル形式を追跡するクラス・ファイルを処理します。Java言語および仮想マシン仕様を参照してください。
ノート:
これはプレビュー機能です。プレビュー機能は、設計、仕様および実装が完了したが、永続的でない機能です。プレビュー機能は、将来のJava SEリリースで、異なる形式で存在することもあれば、まったく存在しないこともあります。プレビュー機能が含まれているコードをコンパイルして実行するには、追加のコマンド行オプションを指定する必要があります。『Preview Language and VM Features』を参照してください。クラス・ファイルAPIに関する背景情報は、JEP 457を参照してください。クラス・ファイルAPIは、次のような重要な原則によって定義されます:
- フィールド、メソッド、属性、バイトコード命令など、すべてのクラス・ファイル・エンティティを不変オブジェクトとして扱います。この不変の表現により、クラス・ファイルが変換されるときに信頼性の高い共有が保証されます。
- ツリー構造を使用して、クラス・ファイルの階層的な性質を表します。
- これにより、ユーザー主導のナビゲーションが可能になり、効率的な解析が可能になります。
- 解析の遅延を強調し、ユーザーが必要とするクラス・ファイルのみを処理します。
- クラス・ファイルの解析および生成APIが十分に整列されている場合は、緊急プロパティとして変換されます。これには、独自の特殊モードや重要な新しいAPIサーフェスは必要ありません。
クラス・ファイルAPIには、要素、ビルダーおよび変換という3つの主要な抽象化が組み込まれています: 要素は、クラス・ファイル・コンポーネントの不変の説明です。ビルダーは、特定のビルド・メソッドを使用してクラス・ファイルを構築します。複合要素の種類ごとにビルドがあります。変換は、ビルド・プロセス中に要素を修正する関数を表します。
APIには、パターンを使用してクラス・ファイルを解析するための新しいメソッドも導入されています。これにより、Javaのパターン・マッチング機能を活用して、より直接的で簡潔な式が可能になります。このAPIを使用するフレームワークおよびツールは、最新のJDKのクラス・ファイルを自動的にサポートします。
パッケージjava.lang.classfile
を参照してください。