java.lang.Object
java.lang.invoke.ConstantBootstraps
public final class ConstantBootstraps extends Object
動的に計算される定数のブートストラップ・メソッド。
 
このクラスのブートストラップ・メソッドは、null値を受け入れる引数を指定しないかぎり、nullである参照引数のNullPointerExceptionをスローします。
- 導入されたバージョン:
- 11
- 
メソッドのサマリー修飾子と型メソッド説明static VarHandlearrayVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass) 配列型にVarHandleを検索します。static <E extends Enum<E>>
 EenumConstant(MethodHandles.Lookup lookup, String name, Class<E> type) nameによって指定された名前を持つtypeによって指定された型のenum定数を返します。static ObjectexplicitCast(MethodHandles.Lookup lookup, String name, Class<?> dstType, Object value) ソース・タイプから宛先タイプへの変換を適用します。static VarHandlefieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) インスタンス・フィールドのVarHandleを検索します。static ObjectgetStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type) クラスで宣言された静的な最終フィールドの値を返します。この値は、(または、プリミティブ値フィールドの場合はラッパー・クラスで宣言されます。)フィールド・タイプと同じですstatic ObjectgetStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type, Class<?> declaringClass) 静的最終フィールドの値を返します。static Objectinvoke(MethodHandles.Lookup lookup, String name, Class<?> type, MethodHandle handle, Object... args) 指定された引数を使ってメソッド・ハンドルを呼び出した結果を返します。static ObjectnullConstant(MethodHandles.Lookup lookup, String name, Class<?> type) typeで指定された参照型のnullオブジェクト参照を戻します。static Class<?>primitiveClass(MethodHandles.Lookup lookup, String name, Class<?> type) nameによって型記述子が指定されているプリミティブ型のClassミラーを戻します。static VarHandlestaticFieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) 静的フィールドのVarHandleを検索します。
- 
メソッドの詳細- 
nullConstantpublic static Object nullConstant(MethodHandles.Lookup lookup, String name, Class<?> type) typeで指定された参照型のnullオブジェクト参照を戻します。- パラメータ:
- lookup- 未使用
- name- 未使用
- type- 参照型
- 戻り値:
- nullの値
- throws:
- IllegalArgumentException-- typeが参照型の場合
 
- 
primitiveClasspublic static Class<?> primitiveClass(MethodHandles.Lookup lookup, String name, Class<?> type) nameによって型記述子が指定されているプリミティブ型のClassミラーを戻します。- パラメータ:
- lookup- 未使用
- name- 目的のプリミティブ型の(JVMS 4.3)記述子
- type- 必要な結果タイプ(- Class.classである必要があります)
- 戻り値:
- Classミラー
- throws:
- IllegalArgumentException- 名前がプリミティブ型の記述子でないか、型が- Class.classでない場合
 
- 
enumConstantpublic static <E extends Enum<E>> E enumConstant(MethodHandles.Lookup lookup, String name, Class<E> type) nameによって指定された名前を持つtypeによって指定された型のenum定数を返します。- 型パラメータ:
- E- 定数値を返す列挙型
- パラメータ:
- lookup- 操作を実行するクラスを説明するルックアップ・コンテキスト(通常はJVMによってスタック)
- name- 返される定数の名前。指定された型の列挙型定数と完全に一致する必要があります。
- type- 定数を戻す列挙型を記述する- Classオブジェクト
- 戻り値:
- 指定された名前を持つ指定されたenum型のenum定数
- throws:
- IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合
- IllegalArgumentException- 指定されたenum型が指定された名前の定数を持たない場合、または指定されたクラス・オブジェクトがenum型を表さない場合
- 関連項目:
 
- 
getStaticFinalpublic static Object getStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type, Class<?> declaringClass) 静的最終フィールドの値を返します。- パラメータ:
- lookup- 操作を実行するクラスを説明するルックアップ・コンテキスト(通常はJVMによってスタック)
- name- フィールドの名前
- type- フィールドの型
- declaringClass- フィールドが宣言されているクラス
- 戻り値:
- フィールドの値
- throws:
- IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合
- NoSuchFieldError- 指定されたフィールドが存在しない場合
- IncompatibleClassChangeError- 指定されたフィールドが- finalでない場合
 
- 
getStaticFinalpublic static Object getStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type) クラスで宣言された静的な最終フィールドの値を返します。この値は、(または、プリミティブ値フィールドの場合はラッパー・クラスで宣言されます。)フィールド・タイプと同じです これは、クラス自体の識別定数インスタンスを宣言する場合の、getStaticFinal(MethodHandles.Lookup, String, Class, Class)の簡略化された形式です。- パラメータ:
- lookup- 操作を実行するクラスを説明するルックアップ・コンテキスト(通常はJVMによってスタック)
- name- フィールドの名前
- type- フィールドの型
- 戻り値:
- フィールドの値
- throws:
- IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合
- NoSuchFieldError- 指定されたフィールドが存在しない場合
- IncompatibleClassChangeError- 指定されたフィールドが- finalでない場合
- 関連項目:
 
- 
invokepublic static Object invoke(MethodHandles.Lookup lookup, String name, Class<?> type, MethodHandle handle, Object... args) throws Throwable 指定された引数を使ってメソッド・ハンドルを呼び出した結果を返します。このメソッドは、呼び出されるメソッド・ハンドルが、 MethodHandle.asType(java.lang.invoke.MethodType)を介して指定されたメソッド・ハンドルを適応させた結果として動作し、戻り型を目的の型に調整します。- パラメータ:
- lookup- 未使用
- name- 未使用
- type- 戻される値の必要な型で、メソッド・ハンドルの戻り型と互換性があること
- handle- 呼び出されるメソッド・ハンドル
- args-- MethodHandle.invokeWithArguments(java.lang.Object...)の場合と同様に、メソッド・ハンドルに渡す引数。 各引数は- nullである可能性があります。
- 戻り値:
- メソッド・ハンドルを呼び出した結果
- throws:
- WrongMethodTypeException- 指定された数の引数を受け取るようにハンドル・メソッドの型を調整できない場合、またはハンドルの戻り型を目的の型に調整できない場合。
- ClassCastException- 引数または呼出しにより生成された結果が参照キャストで変換できない場合
- Throwable- メソッド・ハンドル呼出しによってスローされるすべての要素
 
- 
fieldVarHandlepublic static VarHandle fieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) インスタンス・フィールドのVarHandleを検索します。- パラメータ:
- lookup- 操作を実行するクラスを説明するルックアップ・コンテキスト(通常はJVMによってスタック)
- name- フィールドの名前
- type- 必要な結果タイプ(- Class<VarHandle>である必要があります)
- declaringClass- フィールドが宣言されているクラス
- fieldType- フィールドの型
- 戻り値:
- the VarHandle
- throws:
- IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合
- NoSuchFieldError- 指定されたフィールドが存在しない場合
- IllegalArgumentException- タイプが- VarHandleでないかどうか
 
- 
staticFieldVarHandlepublic static VarHandle staticFieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) 静的フィールドのVarHandleを検索します。- パラメータ:
- lookup- 操作を実行するクラスを説明するルックアップ・コンテキスト(通常はJVMによってスタック)
- name- フィールドの名前
- type- 必要な結果タイプ(- Class<VarHandle>である必要があります)
- declaringClass- フィールドが宣言されているクラス
- fieldType- フィールドの型
- 戻り値:
- the VarHandle
- throws:
- IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合
- NoSuchFieldError- 指定されたフィールドが存在しない場合
- IllegalArgumentException- タイプが- VarHandleでないかどうか
 
- 
arrayVarHandlepublic static VarHandle arrayVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass) 配列型にVarHandleを検索します。- パラメータ:
- lookup- 操作を実行するクラスを説明するルックアップ・コンテキスト(通常はJVMによってスタック)
- name- 未使用
- type- 必要な結果タイプ(- Class<VarHandle>である必要があります)
- arrayClass- 配列の型
- 戻り値:
- the VarHandle
- throws:
- IllegalAccessError- 操作を実行するクラスが配列のコンポーネント・タイプにアクセスできない場合
- IllegalArgumentException- タイプが- VarHandleでないかどうか
 
- 
explicitCastpublic static Object explicitCast(MethodHandles.Lookup lookup, String name, Class<?> dstType, Object value) throws ClassCastException ソース・タイプから宛先タイプへの変換を適用します。宛先タイプが dstTypeで、入力値がvalueの場合、次のいずれかが発生します:- dstTypeが- void.classの場合、- ClassCastExceptionがスローされます。
- dstTypeが- Object.classの場合、- valueはそのまま返されます。
 それ以外の場合は、次のいずれかの変換が valueに適用されます:- dstTypeが参照型の場合、- dstType.cast(value)をコールするかのように、参照キャストが- valueに適用されます。
- dstTypeがプリミティブ・タイプの場合、そして、- valueのランタイム・タイプがプリミティブ・ラッパー・タイプ(- Integerなど)であれば、Javaアン・ボクシング変換が適用され5.1.8、その後にJavaキャスティング変換、直接- dstTypeへの変換、または、- dstTypeが- booleanならば、- intへのどちらかの変換が行われます。そして、least-significant-bitが1または0により- trueまたは- falseへ各々変換されます。- valueのランタイム型がプリミティブ・ラッパー・タイプでない場合は、- ClassCastExceptionがスローされます。
 結果は、次のコードを使用した場合と同じです: MethodHandle id = MethodHandles.identity(dstType); MethodType mt = MethodType.methodType(dstType, Object.class); MethodHandle conv = MethodHandles.explicitCastArguments(id, mt); return conv.invoke(value);- パラメータ:
- lookup- 未使用
- name- 未使用
- dstType- 変換の宛先タイプ
- value- 変換される値
- 戻り値:
- 変換後の値
- throws:
- ClassCastException-- dstTypeが- voidの場合、(1)ごとのキャストが失敗した場合、または- dstTypeがプリミティブ型で、- valueのランタイム型がプリミティブ・ラッパー・タイプ(- Integerなど)でない場合
- 導入されたバージョン:
- 15
 
 
-