- java.lang.Object
-
- java.lang.invoke.CallSite
-
- java.lang.invoke.ConstantCallSite
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 ConstantCallSite(MethodHandle target)创建一个具有永久目标的呼叫站点。protectedConstantCallSite(MethodType targetType, MethodHandle createTargetHook)创建具有永久目标的呼叫站点,可能绑定到呼叫站点本身。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 MethodHandledynamicInvoker()返回此呼叫站点的永久目标。MethodHandlegetTarget()返回调用点,其行为类似于目标方法final的领域ConstantCallSite。voidsetTarget(MethodHandle ignore)
-
-
-
构造方法详细信息
-
ConstantCallSite
public ConstantCallSite(MethodHandle target)
创建一个具有永久目标的呼叫站点。- 参数
-
target- 与此呼叫站点永久关联的目标 - 异常
-
NullPointerException- 如果提出的目标为null
-
ConstantCallSite
protected ConstantCallSite(MethodType targetType, MethodHandle createTargetHook) throws Throwable
创建具有永久目标的呼叫站点,可能绑定到呼叫站点本身。在建设通话地点期间,调用
createTargetHook以产生实际目标,好像通过(MethodHandle) createTargetHook.invoke(this)表格的(MethodHandle) createTargetHook.invoke(this)。请注意,用户代码不能直接在子类构造函数中执行此类操作,因为目标必须在构建器返回
ConstantCallSite之前ConstantCallSite。挂钩被称为将呼叫站点绑定到目标方法句柄,典型的动作是
someTarget.bindTo(this)。 然而,钩子可以随意采取任何行动,包括忽略呼叫站点并返回一个恒定的目标。钩子返回的结果必须是与调用站点完全相同类型的方法句柄。
当钩子被调用时,新的
ConstantCallSite对象处于部分构造状态。 在这种状态下,调用getTarget或任何其他使用目标的尝试将导致一个IllegalStateException。 在任何时候使用type方法获取通话网站的类型是type。- 参数
-
targetType- 与此呼叫站点永久关联的方法句柄的类型 -
createTargetHook- 调用(在呼叫站点上)产生呼叫站点目标的方法句柄 - 异常
-
WrongMethodTypeException- 如果不能在所需的参数上调用钩子,或者如果钩子返回的目标不是给定的targetType -
NullPointerException- 如果钩子返回一个空值 -
ClassCastException- 如果钩子返回MethodHandle以外的MethodHandle -
Throwable- 钩子函数抛出的其他东西
-
-
方法详细信息
-
getTarget
public final MethodHandle getTarget()
返回调用点,其行为类似于目标方法final的领域ConstantCallSite。 也就是说,目标始终是传递给创建此实例的构造函数调用的原始值。- Specified by:
-
getTarget在CallSite - 结果
- 这个调用站点的不变的链接状态,一个恒定的方法句柄
- 异常
-
IllegalStateException- 如果ConstantCallSite构造函数尚未完成 - 另请参见:
-
ConstantCallSite,VolatileCallSite,CallSite.setTarget(java.lang.invoke.MethodHandle),getTarget(),MutableCallSite.getTarget(),VolatileCallSite.getTarget()
-
setTarget
public final void setTarget(MethodHandle ignore)
总是抛出一个UnsupportedOperationException。 这种呼叫站点不能改变其目标。- Specified by:
-
setTarget在CallSite - 参数
-
ignore- 为呼叫网站提出的新目标,被忽略 - 异常
-
UnsupportedOperationException- 因为这种呼叫站点不能改变其目标 - 另请参见:
-
CallSite.getTarget(),setTarget(java.lang.invoke.MethodHandle),MutableCallSite.setTarget(java.lang.invoke.MethodHandle),VolatileCallSite.setTarget(java.lang.invoke.MethodHandle)
-
dynamicInvoker
public final MethodHandle dynamicInvoker()
返回此呼叫站点的永久目标。 既然这个目标永远不会改变,这是正确的CallSite.dynamicInvoker的实现。- Specified by:
-
dynamicInvoker在CallSite - 结果
- 这个调用站点的不变的链接状态,一个恒定的方法句柄
- 异常
-
IllegalStateException- if theConstantCallSiteconstructor has not completed
-
-