モジュール java.base
パッケージ java.lang.constant

インタフェースConstantDesc

既知のすべてのサブインタフェース:
ClassDesc, DirectMethodHandleDesc, MethodHandleDesc, MethodTypeDesc

public sealed interface ConstantDesc permits ClassDesc, MethodHandleDesc, MethodTypeDesc, Double, DynamicConstantDesc<T>, Float, Integer, Long, String
JVMS 4.4で定義されている、ロード可能な定数値用の「名目記述子」 このような記述子は、resolveConstantDesc(MethodHandles.Lookup)を使用して定数値自体を生成できます。

名目型記述子のクラス名は、クラス・ファイルの定数プール内のクラス名のように、名目記述子の一部ではない特定のクラス・ローダーに対して解釈される必要があります。

定数プール(StringIntegerLongFloatDouble)実装ConstantDescではネイティブで表現可能な静的定数を、独自の名目記述子として使用します。 ネイティブ・リンク可能定数(ClassMethodTypeおよびMethodHandle)には対応するConstantDescタイプがあります: ClassDescMethodTypeDesc、およびMethodHandleDesc その他の定数は、DynamicConstantDescのサブタイプで表されます。

バイトコードの生成または解析を実行するAPIは、ConstantDescを使用して、ldc命令(動的定数を含む)、動的定数およびinvokedynamic命令の静的ブートストラップ引数、および定数プールを使用するその他のバイトコードまたはクラス・ファイル構造を記述することをお薦めします。

様々な共通定数(たとえば、プラットフォーム・タイプ用のClassDescインスタンス)を記述する定数は、ConstantDescsで確認できます。

ConstantDescの実装は不変であり、その動作はオブジェクト・アイデンティティに依存しないようにする必要があります。

非プラットフォーム・クラスは、ConstantDescを直接実装することはできません。 かわりに、DynamicConstantDesc (Enum.EnumDescおよびVarHandle.VarHandleDesc doとして。)を拡張する必要があります

Object.equals(Object)メソッドを使用して、名目記述子を比較する必要があります。 特定のエンティティが常に同じ記述子インスタンスによって表されるという保証はありません。

Java Virtual Machine仕様を参照してください:
4.4 定数プール
導入されたバージョン:
12
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    JVMS 5.4.3の解決動作およびJVMS 5.4.4のアクセス制御動作を反映して、この記述子を解決します。
  • メソッドの詳細

    • resolveConstantDesc

      JVMS 5.4.3の解決動作およびJVMS 5.4.4のアクセス制御動作を反映して、この記述子を解決します。 解決およびアクセス制御コンテキストは、MethodHandles.Lookupパラメータによって提供されます。 結果の値のキャッシュは実行されません。
      APIのノート:
      MethodTypeDescは、パラメータ・スロットが255を超えるメソッドなど、MethodTypeでは表現できないメソッド・タイプ記述子を表すことができるため、解決を試みた場合にエラーが発生することがあります。
      パラメータ:
      lookup - 名前解決およびアクセス制御コンテキストを提供するためのMethodHandles.Lookup
      戻り値:
      解決済定数値
      例外:
      ReflectiveOperationException - 解決の過程でクラス、メソッドまたはフィールドを反映的に解決できなかった場合
      LinkageError - リンケージ・エラーが発生した場合
      Java Virtual Machine仕様を参照してください:
      5.4.3 解決
      5.4.4アクセス制御