模块  java.base
软件包  java.lang.invoke

Class ConstantBootstraps


  • public final class ConstantBootstraps
    extends Object
    动态计算常量的Bootstrap方法。

    此类中的自举方法将抛出NullPointerException对任何参考参数为null ,除非参数被指定为未使用的或指定接受null值。

    从以下版本开始:
    11
    • 构造方法详细信息

      • ConstantBootstraps

        public ConstantBootstraps()
    • 方法详细信息

      • nullConstant

        public static Object nullConstant​(MethodHandles.Lookup lookup,
                                          String name,
                                          <?> type)
        返回由 type指定的引用类型的 null对象引用。
        参数
        lookup - 未使用
        name - 未使用
        type - 参考类型
        结果
        一个 null
        异常
        IllegalArgumentException - 如果 type不是引用类型
      • primitiveClass

        public static <?> primitiveClass​(MethodHandles.Lookup lookup,
                                              String name,
                                              <?> type)
        返回原始类型的镜像,其类型描述符由name指定。
        参数
        lookup - 未使用
        name - 所需基元类型的描述符(JVMS 4.3)
        type - 所需的结果类型(必须是 Class.class
        结果
        镜像
        异常
        IllegalArgumentException - 如果名称不是基元类型的描述符或类型不是 Class.class
      • enumConstant

        public static <E extends Enum<E>> E enumConstant​(MethodHandles.Lookup lookup,
                                                         String name,
                                                         <E> type)
        返回由 type指定的类型的 枚举常量,其名称由 name指定。
        参数类型
        E - 要为其返回常量值的枚举类型
        参数
        lookup - 描述执行操作的类的查找上下文(通常由JVM堆叠)
        name - 要返回的常量的名称,该名称必须与指定类型中的枚举常量完全匹配。
        type - 描述要为其返回常量的枚举类型的 对象
        结果
        具有指定名称的指定枚举类型的枚举常量
        异常
        IllegalAccessError - 如果执行操作的类无法访问声明类或字段
        IllegalArgumentException - 如果指定的枚举类型没有具有指定名称的常量,或者指定的类对象不表示枚举类型
        另请参见:
        Enum.valueOf(Class, String)
      • getStaticFinal

        public static Object getStaticFinal​(MethodHandles.Lookup lookup,
                                            String name,
                                            <?> type,
                                            <?> declaringClass)
        返回静态final字段的值。
        参数
        lookup - 描述执行操作的类的查找上下文(通常由JVM堆叠)
        name - 字段的名称
        type - 字段的类型
        declaringClass - 声明字段的类
        结果
        该领域的价值
        异常
        IllegalAccessError - 如果执行操作的类无法访问声明类或字段
        NoSuchFieldError - 如果指定的字段不存在
        IncompatibleClassChangeError - 如果指定的字段不是 final
      • staticFieldVarHandle

        public static VarHandle staticFieldVarHandle​(MethodHandles.Lookup lookup,
                                                     String name,
                                                     <VarHandle> type,
                                                     <?> declaringClass,
                                                     <?> fieldType)
        找到静态字段的VarHandle
        参数
        lookup - 描述执行操作的类的查找上下文(通常由JVM堆叠)
        name - 字段的名称
        type - 所需的结果类型(必须是 Class<VarHandle>
        declaringClass - 声明字段的类
        fieldType - 字段的类型
        结果
        VarHandle
        异常
        IllegalAccessError - 如果执行操作的类无法访问声明类或字段
        NoSuchFieldError - 如果指定的字段不存在
        IllegalArgumentException - 如果类型不是 VarHandle