モジュール java.compiler

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

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

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

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

注釈処理中は、不完全なプログラムやエラーのあるプログラムでの操作が必要ですが、結果として得られるモデルの品質が低下します。 ソース・コードが構文的に整形式ではない場合や、新しい型の生成によって取り除くことができないようなその他の回復不能なエラーが発生した場合は、モデルが実装の質の問題となることも、ならないこともあります。 プログラムが構文的に正しくても、その他の部分でエラーがある場合、返されるモデルには、プログラム内のメソッド本体がすべて"throw new RuntimeException();"で置き換えられた場合と同程度の情報が含まれる必要があります。 プログラムが欠落しているタイプXyzを参照している場合、x yzタイプの宣言が"class Xyz {}""interface Xyz {}""enum Xyz {}" "@interface Xyz {}"または"record Xyz {}"であると想定されているより、戻されるモデルには、詳細情報が含まれていない必要があります。 プログラムが欠落している型の Xyz<K1, ... ,Kn>を参照する場合、返されるモデルは、Xyzの宣言が"class Xyz<T1, ... ,Tn> {}"または"interface Xyz<T1, ... ,Tn> {}"であると仮定された場合より少ない情報を含む必要があります

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

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

導入されたバージョン:
1.6
関連項目:
Elements
  • インタフェースのサマリー
    インタフェース 説明
    AnnotationMirror
    注釈を表します。
    AnnotationValue
    注釈型の要素の値を表します。
    AnnotationValueVisitor<R,​P>
    注釈型要素の値のビジターです。ビジター・デザイン・パターンのバリアントを使用します。
    Element
    モジュール、パッケージ、クラス、メソッドなどのプログラム要素を表します。
    ElementVisitor<R,​P>
    ビジター・デザイン・パターンのスタイルによるプログラム要素のビジターです。
    ExecutableElement
    クラスまたはインタフェースのメソッド、コンストラクタ、または初期化子(静的またはインスタンス)を表します(注釈型要素を含む)。
    ModuleElement
    モジュール・プログラム要素を表します。
    ModuleElement.Directive
    このモジュールの宣言内のディレクティブを表します。
    ModuleElement.DirectiveVisitor<R,​P>
    ビジターのデザイン・パターンのスタイルで、モジュール・ディレクティブのビジター。
    ModuleElement.ExportsDirective
    エクスポートされたモジュールのパッケージ。
    ModuleElement.OpensDirective
    モジュールの開かれたパッケージ。
    ModuleElement.ProvidesDirective
    モジュールによって提供されるサービスの実装。
    ModuleElement.RequiresDirective
    モジュールの依存関係。
    ModuleElement.UsesDirective
    モジュールによって使用されるサービスへの参照。
    Name
    文字の不変シーケンスです。
    PackageElement
    パッケージのプログラム要素を表します。
    Parameterizable
    型パラメータを持つ要素に対応するmixinインタフェースです。
    QualifiedNameable
    修飾名を持つ要素に対応するmixinインタフェースです。
    RecordComponentElement
    レコードに関連付けられ、Java言語のプレビュー機能。

    レコード・コンポーネントを表します。
    TypeElement
    クラスまたはインタフェースのプログラム要素を表します。
    TypeParameterElement
    ジェネリック的なクラス、インタフェース、メソッド、またはコンストラクタの要素の仮型パラメータを表します。
    VariableElement
    フィールド、enum定数、メソッドまたはコンストラクタのパラメータ、ローカル変数、リソース変数、または例外パラメータを表します。
  • 列挙型のサマリー
    列挙型 説明
    ElementKind
    要素のkindです。
    Modifier
    クラス、メソッド、フィールドなど、プログラム要素の修飾子を表します。
    ModuleElement.DirectiveKind
    ディレクティブのkind
    NestingKind
    型要素の入れ子の種類です。
  • 例外のサマリー
    Exception 説明
    UnknownAnnotationValueException
    未知の種類の注釈値が検出されたことを示します。
    UnknownDirectiveException
    未知の種類のモジュール・ディレクティブ文が見つかったことを示します。
    UnknownElementException
    未知の種類の要素が検出されたことを示します。