Creates a call site with a permanent target, possibly bound to the call site itself.
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.