- 既知のすべてのサブインタフェース:
ClassDesc
,DirectMethodHandleDesc
,MethodHandleDesc
,MethodTypeDesc
resolveConstantDesc(MethodHandles.Lookup)
を使用して定数値自体を生成できます。
名目型記述子のクラス名は、クラス・ファイルの定数プール内のクラス名のように、名目記述子の一部ではない特定のクラス・ローダーに対して解釈される必要があります。
定数プール(String
、Integer
、Long
、Float
、Double
)実装ConstantDesc
ではネイティブで表現可能な静的定数を、独自の名目記述子として使用します。 ネイティブ・リンク可能定数(Class
、MethodType
およびMethodHandle
)には対応するConstantDescタイプがあります: ClassDesc
、MethodTypeDesc
、およびMethodHandleDesc
。 その他の定数は、DynamicConstantDesc
のサブタイプで表されます。
バイトコードの生成または解析を実行するAPIは、ConstantDescを使用して、ldc
命令(動的定数を含む)、動的定数およびinvokedynamic
命令の静的ブートストラップ引数、および定数プールを使用するその他のバイトコードまたはクラス・ファイル構造を記述することをお薦めします。
様々な共通定数(たとえば、プラットフォーム・タイプ用のClassDesc
インスタンス)を記述する定数は、ConstantDescs
で確認できます。
ConstantDescの実装は不変であり、その動作はオブジェクト・アイデンティティに依存しないようにする必要があります。
非プラットフォーム・クラスは、ConstantDescを直接実装することはできません。 かわりに、DynamicConstantDesc
(Enum.EnumDesc
およびVarHandle.VarHandleDesc
doとして。)を拡張する必要があります
Object.equals(Object)
メソッドを使用して、名目記述子を比較する必要があります。 特定のエンティティが常に同じ記述子インスタンスによって表されるという保証はありません。
- APIのノート:
- 将来、Java言語が許可すると、ConstantDescが
sealed
インタフェースになる場合があり、明示的に許可されている型を除いてサブクラス化が禁止されます。 クライアントでは、次のサブタイプのセットが不足していると仮定できます:String
,Integer
,Long
,Float
,Double
,ClassDesc
,MethodTypeDesc
,MethodHandleDesc
およびDynamicConstantDesc
;このリストは、JVMS 4.4で定義されている定数プール形式への将来の変更を反映するように拡張できます。 - Java Virtual Machine仕様を参照してください:
-
4.4 定数プール
- 導入されたバージョン:
- 12
- 関連項目:
Constable
,ConstantDescs
-
メソッドのサマリー
修飾子と型メソッド説明resolveConstantDesc(MethodHandles.Lookup lookup)
JVMS 5.4.3の解決動作およびJVMS 5.4.4のアクセス制御動作を反映して、この記述子を解決します。
-
メソッドの詳細
-
resolveConstantDesc
Object resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationExceptionJVMS 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アクセス制御
-