Modifier | Constructor and Description |
---|---|
|
ConstantCallSite(MethodHandle target)
Creates a call site with a permanent target.
|
protected |
ConstantCallSite(MethodType targetType,
MethodHandle createTargetHook)
Creates a call site with a permanent target, possibly bound to the call site itself.
|
Modifier and Type | Method and Description |
---|---|
MethodHandle |
dynamicInvoker()
Returns this call site's permanent target.
|
MethodHandle |
getTarget()
Returns the target method of the call site, which behaves
like a
final field of the ConstantCallSite . |
void |
setTarget(MethodHandle ignore)
Always throws an
UnsupportedOperationException . |
public ConstantCallSite(MethodHandle target)
target
- the target to be permanently associated with this call siteNullPointerException
- if the proposed target is nullprotected ConstantCallSite(MethodType targetType, MethodHandle createTargetHook) throws Throwable
During construction of the call site, the createTargetHook
is invoked to
produce the actual target, as if by a call of the form
(MethodHandle) createTargetHook.invoke(this)
.
Note that user code cannot perform such an action directly in a subclass constructor,
since the target must be fixed before the ConstantCallSite
constructor returns.
The hook is said to bind the call site to a target method handle,
and a typical action would be someTarget.bindTo(this)
.
However, the hook is free to take any action whatever,
including ignoring the call site and returning a constant target.
The result returned by the hook must be a method handle of exactly the same type as the call site.
While the hook is being called, the new ConstantCallSite
object is in a partially constructed state.
In this state,
a call to getTarget
, or any other attempt to use the target,
will result in an IllegalStateException
.
It is legal at all times to obtain the call site's type using the type
method.
targetType
- the type of the method handle to be permanently associated with this call sitecreateTargetHook
- a method handle to invoke (on the call site) to produce the call site's targetWrongMethodTypeException
- if the hook cannot be invoked on the required arguments,
or if the target returned by the hook is not of the given targetType
NullPointerException
- if the hook returns a null valueClassCastException
- if the hook returns something other than a MethodHandle
Throwable
- anything else thrown by the hook functionpublic final MethodHandle getTarget()
final
field of the ConstantCallSite
.
That is, the target is always the original value passed
to the constructor call which created this instance.getTarget
in class CallSite
IllegalStateException
- if the ConstantCallSite
constructor has not completedConstantCallSite
,
VolatileCallSite
,
CallSite.setTarget(java.lang.invoke.MethodHandle)
,
getTarget()
,
MutableCallSite.getTarget()
,
VolatileCallSite.getTarget()
public final void setTarget(MethodHandle ignore)
UnsupportedOperationException
.
This kind of call site cannot change its target.setTarget
in class CallSite
ignore
- a new target proposed for the call site, which is ignoredUnsupportedOperationException
- because this kind of call site cannot change its targetCallSite.getTarget()
,
setTarget(java.lang.invoke.MethodHandle)
,
MutableCallSite.setTarget(java.lang.invoke.MethodHandle)
,
VolatileCallSite.setTarget(java.lang.invoke.MethodHandle)
public final MethodHandle dynamicInvoker()
CallSite.dynamicInvoker
.dynamicInvoker
in class CallSite
IllegalStateException
- if the ConstantCallSite
constructor has not completed Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2022, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.