Module java.base
Package java.lang.invoke

Class ConstantCallSite

java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.ConstantCallSite

public non-sealed classConstantCallSiteextendsCallSite
AConstantCallSite is aCallSite whose target is permanent, and can never be changed. Aninvokedynamic instruction linked to aConstantCallSite is permanently bound to the call site's target.
Since:
1.7
  • Constructor Details

    • ConstantCallSite

      public ConstantCallSite(MethodHandle target)
      Creates a call site with a permanent target.
      Parameters:
      target - the target to be permanently associated with this call site
      Throws:
      NullPointerException - if the proposed target is null
    • ConstantCallSite

      protected ConstantCallSite(MethodType targetType,MethodHandle createTargetHook) throwsThrowable
      Creates a call site with a permanent target, possibly bound to the call site itself.

      During construction of the call site, thecreateTargetHook 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 theConstantCallSite constructor returns.

      The hook is said to bind the call site to a target method handle, and a typical action would besomeTarget.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 newConstantCallSite object is in a partially constructed state. In this state, a call togetTarget, or any other attempt to use the target, will result in anIllegalStateException. It is legal at all times to obtain the call site's type using thetype method.

      Parameters:
      targetType - the type of the method handle to be permanently associated with this call site
      createTargetHook - a method handle to invoke (on the call site) to produce the call site's target
      Throws:
      WrongMethodTypeException - if the hook cannot be invoked on the required arguments, or if the target returned by the hook is not of the giventargetType
      NullPointerException - if the hook returns a null value
      ClassCastException - if the hook returns something other than aMethodHandle
      Throwable - anything else thrown by the hook function
  • Method Details