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

インタフェースConstantDesc

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

    public interface ConstantDesc
    JVMS 4.4で定義されている、ロード可能な定数値用の「名目記述子」 このような記述子は、resolveConstantDesc(MethodHandles.Lookup)を使用して定数値自体を生成できます。

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

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

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

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

    ConstantDescの実装は、value-basedクラスでなければなりません。

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

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

    APIの注:
    将来、Java言語が許可すると、ConstantDescsealedインタフェースになる場合があり、明示的に許可されている型を除いてサブクラス化が禁止されます。 クライアントでは、次のサブタイプのセットが不足していると仮定できます。: String, Integer, Long, Float, Double, ClassDesc, MethodTypeDesc, MethodHandleDescおよびDynamicConstantDesc;このリストは、JVMS 4.4で定義されている定数プール形式への将来の変更を反映するように拡張できます。
    導入されたバージョン:
    12
    関連項目:
    Constable, ConstantDescs
    Java™仮想マシン仕様:
    4.4定数プール
    • メソッドのサマリー

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

      • resolveConstantDesc

        Object resolveConstantDesc​(MethodHandles.Lookup lookup)
                            throws ReflectiveOperationException
        JVMS 5.4.3の解決動作およびJVMS 5.4.4のアクセス制御動作を反映して、この記述子を解決します。 解決およびアクセス制御コンテキストは、MethodHandles.Lookupパラメータによって提供されます。 結果の値のキャッシュは実行されません。
        パラメータ:
        lookup - 名前解決およびアクセス制御コンテキストを提供するためのMethodHandles.Lookup
        戻り値:
        解決済定数値
        例外:
        ReflectiveOperationException - 解決の過程でクラス、メソッドまたはフィールドを反映的に解決できなかった場合
        LinkageError - リンケージ・エラーが発生した場合
        Java™仮想マシン仕様:
        5.4.3解像度、5.4.4 Access Control