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

クラスConstantBootstraps


  • public final class ConstantBootstraps
    extends Object
    動的に計算される定数のブートストラップ・メソッド。

    このクラスのブートストラップ・メソッドは、null値を受け入れる引数を指定しないかぎり、nullである参照引数のNullPointerExceptionをスローします。

    導入されたバージョン:
    11
    • コンストラクタの詳細

      • ConstantBootstraps

        public ConstantBootstraps()
    • メソッドの詳細

      • 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型を表さない場合
        関連項目:
        Enum.valueOf(Class, String)
      • 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でない場合
        関連項目:
        getStaticFinal(MethodHandles.Lookup, String, Class, Class)
      • invoke

        public 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である可能性があります。
        戻り値:
        メソッド・ハンドルを呼び出した結果
        例外:
        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でないかどうか