モジュール java.compiler

パッケージjavax.lang.model.element


パッケージjavax.lang.model.element
Javaプログラミング言語の要素をモデル化するために使用されるインタフェースです。 このパッケージでは、「要素」という用語はプログラム要素(プログラムを構成する宣言されたエンティティ)を表すために使用されます。 要素には、クラス、インタフェース、メソッド、コンストラクタ、およびフィールドが含まれます。 このパッケージのインタフェースでは、メソッド本体の内部にあるプログラムの構造はモデル化されていません。たとえば、forループやtry finallyブロックの表現はありません。 ただし、インタフェースではメソッド本体の内部にのみ存在する一部の構造(ローカル変数や匿名クラスなど)はモデル化することができます。

注釈処理のコンテキストで使用するときは、表される要素の正確なモデルを返す必要があります。 これは言語モデルであるため、ソース・コードはクラス・ファイルなどの実行可能な出力の中の表現ではなく、その構造構文の基準となる表現(参照表現)を提供します。 実行可能な出力は、モデル化要素を作成するための基礎として機能することができます。 ただし、ソース・コードを実行可能な出力に変換する処理では、ソース・コード表現の一部の特性を復元することが許可されない場合があります。 たとえば、source retentionを持つ注釈をクラス・ファイルから復元することはできません。また、クラス・ファイルがソースの位置情報を提供できない場合もあります。 parametersの名前は、クラス・ファイルからリカバリできない場合があります。 クラス・ファイルから作成された要素のmodifiersは、次のようなソース・ファイルから作成された同じ宣言の要素とは異なる場合があります:

  • クラスまたはインタフェースにstrictfpがある
  • パラメータにfinalがある
  • クラスおよびインタフェースにprotectedprivate、およびstaticがある
mandatedの要素の中には、クラス・ファイルから作成されたときにそのようにマークされないものがあります。 また、クラス・ファイル内のsyntheticコンストラクト(ネストされたクラスの実装に使用されるアクセッサ・メソッドや、共変値の戻り値の実装に使用される「ブリッジ・メソッド」など)は、このモデルの外部で厳密に翻訳アーティファクトです。 ただし、クラス・ファイルを操作する場合は、そのような要素を操作して、必要に応じてスクリーニングできると便利です。

注釈処理中は、不完全なプログラムやエラーのあるプログラムでの操作が必要ですが、結果として得られるモデルの品質が低下します。 ソース・コードが構文的に整形式でないか、新しいクラスまたはインタフェースの生成によって削除できなかったその他の回復不能なエラーがある場合、モデルは実装の品質の問題として提供される場合とされない場合があります。 クラスまたはインタフェースのプログラムが構文的に有効であるが、他の方法では誤りがある場合、プログラム内のすべてのメソッド本体が"throw new RuntimeException();"に置き換えられた場合よりも、返されるモデルの情報が少なくなる必要があります。 プログラムが欠落しているクラスまたはインタフェースXyzを参照する場合、返されるモデルには、クラスまたはインタフェースXyzの宣言が"class Xyz {}", "interface Xyz {}", "enum Xyz {}", "@interface Xyz {}"または "record Xyz {}"であるとみなされた場合よりも少ない情報が含まれていてはいけません。 プログラムが欠落しているクラスまたはインタフェースXyz<K1, ... ,Kn>を参照している場合、返されるモデルには、Xyzの宣言が"class Xyz<T1, ... ,Tn> {}"または"interface Xyz<T1, ... ,Tn> {}"であると想定される場合よりも少ない情報が含まれていてはいけません

特定の実装で特に指定されないかぎり、このパッケージのメソッドが返すコレクションは、呼出し側からは変更不可能であり、並行アクセスに対しては安全ではないと想定するようにしてください。

特に指定されないかぎり、このパッケージのメソッドはnull引数が渡されるとNullPointerExceptionをスローします。

Java言語仕様を参照してください:
「6.1 宣言」
「7.4 パッケージ宣言」
「7.7 モジュール宣言」
「8.1 クラス宣言」
「8.3 フィールド宣言」
「8.4 メソッド宣言」
「8.5 メンバー・クラスおよびインタフェース宣言」
「8.8 コンストラクタ宣言」
「9.1 インタフェース宣言」
導入されたバージョン:
1.6
関連項目:
  • クラス
    説明
    注釈を表します。
    注釈インタフェース要素の値を表します。
    ビジター・デザイン・パターンのバリアントを使用した、注釈インタフェース要素の値のビジター。
    モジュール、パッケージ、クラス、メソッドなどのプログラム要素を表します。
    要素のkindです。
    ビジター・デザイン・パターンのスタイルによるプログラム要素のビジターです。
    注釈インタフェース要素を含む、クラスまたはインタフェースのメソッド、コンストラクタまたはイニシャライザ(静的またはインスタンス)を表します。
    クラス、メソッド、フィールドなど、プログラム要素の修飾子を表します。
    モジュール・プログラム要素を表します。
    このモジュールの宣言内のディレクティブを表します。
    ディレクティブのkind
    ビジター設計パターンのスタイルでのモジュール・ディレクティブのビジター。
    モジュールのエクスポートされたパッケージ。
    モジュールの開いたパッケージ。
    モジュールによって提供されるサービスの実装。
    モジュールの依存関係。
    モジュールで使用されるサービスへの参照。
    文字の不変シーケンスです。
    型要素の入れ子の種類です。
    パッケージのプログラム要素を表します。
    型パラメータを持つ要素に対応するmixinインタフェースです。
    修飾名を持つ要素に対応するmixinインタフェースです。
    レコード・コンポーネントを表します。
    クラスまたはインタフェースのプログラム要素を表します。
    ジェネリック的なクラス、インタフェース、メソッド、またはコンストラクタの要素の仮型パラメータを表します。
    未知の種類の注釈値が検出されたことを示します。
    不明な種類のモジュール・ディレクティブが検出されたことを示します。
    未知の種類の要素が検出されたことを示します。
    フィールド、enum定数、メソッドまたはコンストラクタのパラメータ、ローカル変数、リソース変数、または例外パラメータを表します。