クラスConstantBootstraps
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を検索します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。toString()オブジェクトの文字列表現を返します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
メソッドの詳細
-
nullConstant
public static Object nullConstant(MethodHandles.Lookup lookup, String name, Class<?> type) typeで指定された参照型のnullオブジェクト参照を戻します。- パラメータ:
lookup- 未使用name- 未使用type- 参照型- 戻り値:
nullの値- スロー:
IllegalArgumentException-typeが参照型の場合
-
primitiveClass
public static Class<?> primitiveClass(MethodHandles.Lookup lookup, String name, Class<?> type) nameによって型記述子が指定されているプリミティブ型のClassミラーを戻します。- パラメータ:
lookup- 未使用name- 必要なプリミティブ型の記述子(JVMS 4.3)type- 必要な結果タイプ(Class.classである必要があります)- 戻り値:
Classミラー- スロー:
IllegalArgumentException- 名前がプリミティブ型の記述子でないか、型がClass.classでない場合
-
enumConstant
public 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定数
- スロー:
IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合IllegalArgumentException- 指定されたenum型が指定された名前の定数を持たない場合、または指定されたクラス・オブジェクトがenum型を表さない場合- 関連項目:
-
getStaticFinal
public static Object getStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type, Class<?> declaringClass) 静的最終フィールドの値を返します。- パラメータ:
lookup- 操作を実行するクラスを説明するルックアップ・コンテキスト(通常はJVMによってスタック)name- フィールドの名前type- フィールドの型declaringClass- フィールドが宣言されているクラス- 戻り値:
- フィールドの値
- スロー:
IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合NoSuchFieldError- 指定されたフィールドが存在しない場合IncompatibleClassChangeError- 指定されたフィールドがfinalでない場合
-
getStaticFinal
public static Object getStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type) クラスで宣言された静的な最終フィールドの値を返します。この値は、(または、プリミティブ値フィールドの場合はラッパー・クラスで宣言されます。)フィールド・タイプと同じです これは、クラス自体の識別定数インスタンスを宣言する場合の、getStaticFinal(MethodHandles.Lookup, String, Class, Class)の簡略化された形式です。- パラメータ:
lookup- 操作を実行するクラスを説明するルックアップ・コンテキスト(通常はJVMによってスタック)name- フィールドの名前type- フィールドの型- 戻り値:
- フィールドの値
- スロー:
IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合NoSuchFieldError- 指定されたフィールドが存在しない場合IncompatibleClassChangeError- 指定されたフィールドがfinalでない場合- 関連項目:
-
invoke
public static Object invoke(MethodHandles.Lookup lookup, String name, Class<?> type, MethodHandle handle, Object... args) throws Throwable 指定された引数を使ってメソッド・ハンドルを呼び出した結果を返します。このメソッドは、呼び出されるメソッド・ハンドルが、
MethodHandle.asType(MethodType)を介して指定されたメソッド・ハンドルを適応させ、戻り型を目的のタイプに調整した結果であるかのように動作します。- パラメータ:
lookup- 未使用name- 未使用type- 戻される値の必要な型で、メソッド・ハンドルの戻り型と互換性があることhandle- 呼び出されるメソッド・ハンドルargs-MethodHandle.invokeWithArguments(Object...)の場合と同様に、メソッド・ハンドルに渡す引数。 各引数はnullである可能性があります。- 戻り値:
- メソッド・ハンドルを呼び出した結果
- スロー:
WrongMethodTypeException- 指定された数の引数を受け取るようにハンドル・メソッドの型を調整できない場合、またはハンドルの戻り型を目的の型に調整できない場合。ClassCastException- 引数または呼出しにより生成された結果が参照キャストで変換できない場合Throwable- メソッド・ハンドル呼出しによってスローされるすべての要素
-
fieldVarHandle
public 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 - スロー:
IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合NoSuchFieldError- 指定されたフィールドが存在しない場合IllegalArgumentException- タイプがVarHandleでないかどうか
-
staticFieldVarHandle
public 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 - スロー:
IllegalAccessError- 宣言するクラスまたはフィールドに、操作を実行するクラスがアクセスできない場合NoSuchFieldError- 指定されたフィールドが存在しない場合IllegalArgumentException- タイプがVarHandleでないかどうか
-
arrayVarHandle
public static VarHandle arrayVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass) 配列型にVarHandleを検索します。- パラメータ:
lookup- 操作を実行するクラスを説明するルックアップ・コンテキスト(通常はJVMによってスタック)name- 未使用type- 必要な結果タイプ(Class<VarHandle>である必要があります)arrayClass- 配列の型- 戻り値:
- the
VarHandle - スロー:
IllegalAccessError- 操作を実行するクラスが配列のコンポーネント・タイプにアクセスできない場合IllegalArgumentException- タイプがVarHandleでないかどうか
-
explicitCast
public 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がnullの場合、dstTypeのデフォルト値(JVMS 2.3)が返されます。valueの実行時型がプリミティブ・ラッパー型(Integerなど)の場合は、Javaのアンボックス化変換が適用されます(JLS 5.1.8)。- 実行時型が
Booleanの場合、ボックス化解除の結果はintに変換され、trueは1になり、falseは0になります。
dstTypeがbooleanでない場合、キャストはdstTypeに直接変換されます。dstTypeがbooleanの場合、キャストはintに変換され、結果のbooleanは、キャストintの最下位ビットが1かどうかをテストすることによって生成されます。
- 実行時型が
- それ以外の場合は、
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- 変換される値(nullの場合もある)- 戻り値:
- 変換後の値
- スロー:
ClassCastException-dstTypeがvoidの場合、dstTypeが参照型で、参照キャストが失敗した場合、またはdstTypeがプリミティブで、valueがラッパー・クラスではない参照型のインスタンスである場合- 導入されたバージョン:
- 15
-