- java.lang.Object
-
- java.lang.invoke.ConstantBootstraps
-
public final class ConstantBootstraps extends Object
动态计算常量的Bootstrap方法。此类中的自举方法将抛出
NullPointerException对任何参考参数为null,除非参数被指定为未使用的或指定接受null值。- 从以下版本开始:
- 11
-
-
构造方法摘要
构造方法 构造器 描述 ConstantBootstraps()
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static VarHandlearrayVarHandle(MethodHandles.Lookup lookup, String name, 类<VarHandle> type, 类<?> arrayClass)查找数组类型的VarHandle。static <E extends Enum<E>>
EenumConstant(MethodHandles.Lookup lookup, String name, 类<E> type)返回由type指定的类型的枚举常量,其名称由name指定。static VarHandlefieldVarHandle(MethodHandles.Lookup lookup, String name, 类<VarHandle> type, 类<?> declaringClass, 类<?> fieldType)查找实例字段的VarHandle。static ObjectgetStaticFinal(MethodHandles.Lookup lookup, String name, 类<?> type)返回类中声明的静态final字段的值,该字段与字段的类型相同(或者,对于原始值字段,在包装类中声明。)static ObjectgetStaticFinal(MethodHandles.Lookup lookup, String name, 类<?> type, 类<?> declaringClass)返回静态final字段的值。static Objectinvoke(MethodHandles.Lookup lookup, String name, 类<?> type, MethodHandle handle, Object... args)返回使用提供的参数调用方法句柄的结果。static ObjectnullConstant(MethodHandles.Lookup lookup, String name, 类<?> type)返回由type指定的引用类型的null对象引用。static 类<?>primitiveClass(MethodHandles.Lookup lookup, String name, 类<?> type)返回原始类型的类镜像,其类型描述符由name指定。static VarHandlestaticFieldVarHandle(MethodHandles.Lookup lookup, String name, 类<VarHandle> type, 类<?> declaringClass, 类<?> fieldType)找到静态字段的VarHandle。
-
-
-
方法详细信息
-
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
-
getStaticFinal
public static Object getStaticFinal(MethodHandles.Lookup lookup, String name, 类<?> type)
返回在类中声明的静态final字段的值,该字段与字段的类型相同(或者,对于原始值字段,在包装类中声明。)这是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, 类<?> 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, 类<VarHandle> type, 类<?> declaringClass, 类<?> fieldType)
查找实例字段的VarHandle。- 参数
-
lookup- 描述执行操作的类的查找上下文(通常由JVM堆叠) -
name- 字段的名称 -
type- 所需的结果类型(必须是Class<VarHandle>) -
declaringClass- 声明字段的类 -
fieldType- 字段的类型 - 结果
-
VarHandle - 异常
-
IllegalAccessError- 如果执行操作的类无法访问声明类或字段 -
NoSuchFieldError- 如果指定的字段不存在 -
IllegalArgumentException- 如果类型不是VarHandle
-
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
-
arrayVarHandle
public static VarHandle arrayVarHandle(MethodHandles.Lookup lookup, String name, 类<VarHandle> type, 类<?> arrayClass)
查找阵列类型的VarHandle。- 参数
-
lookup- 描述执行操作的类的查找上下文(通常由JVM堆叠) -
name- 未使用 -
type- 必需的结果类型(必须是Class<VarHandle>) -
arrayClass- 数组的类型 - 结果
-
VarHandle - 异常
-
IllegalAccessError- 如果执行操作的类无法访问该数组的组件类型 -
IllegalArgumentException- 如果类型不是VarHandle
-
-