java.lang.Object
java.lang.constant.DynamicCallSiteDesc
public class DynamicCallSiteDesc extends Object
A nominal descriptor for an
invokedynamic call site.
Concrete subtypes of DynamicCallSiteDesc must be value-based.
- Since:
- 12
-
Method Summary
Modifier and Type Method Description ConstantDesc[]bootstrapArgs()ReturnsConstantDescs describing the bootstrap arguments for theinvokedynamic.MethodHandleDescbootstrapMethod()Returns aMethodHandleDescdescribing the bootstrap method for theinvokedynamic.booleanequals(Object o)Compares the specified object with this descriptor for equality.StringinvocationName()Returns the invocation name that would appear in theNameAndTypeoperand of theinvokedynamic.MethodTypeDescinvocationType()Returns aMethodTypeDescdescribing the invocation type that would appear in theNameAndTypeoperand of theinvokedynamic.static DynamicCallSiteDescof(DirectMethodHandleDesc bootstrapMethod, MethodTypeDesc invocationType)Creates a nominal descriptor for aninvokedynamiccall site whose bootstrap method has no static arguments and for which the name parameter isConstantDescs.DEFAULT_NAME.static DynamicCallSiteDescof(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType)Creates a nominal descriptor for aninvokedynamiccall site whose bootstrap method has no static arguments.static DynamicCallSiteDescof(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType, ConstantDesc... bootstrapArgs)Creates a nominal descriptor for aninvokedynamiccall site.CallSiteresolveCallSiteDesc(MethodHandles.Lookup lookup)Reflectively invokes the bootstrap method with the specified arguments, and return the resultingCallSiteStringtoString()Returns a compact textual description of this call site description, including the bootstrap method, the invocation name and type, and the static bootstrap arguments.DynamicCallSiteDescwithArgs(ConstantDesc... bootstrapArgs)Returns a nominal descriptor for aninvokedynamiccall site whose bootstrap method, name, and invocation type are the same as this one, but with the specified bootstrap arguments.DynamicCallSiteDescwithNameAndType(String invocationName, MethodTypeDesc invocationType)Returns a nominal descriptor for aninvokedynamiccall site whose bootstrap and bootstrap arguments are the same as this one, but with the specified invocationName and invocation invocationType
-
Method Details
-
of
public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType, ConstantDesc... bootstrapArgs)Creates a nominal descriptor for aninvokedynamiccall site.- Parameters:
bootstrapMethod- aDirectMethodHandleDescdescribing the bootstrap method for theinvokedynamicinvocationName- The unqualified name that would appear in theNameAndTypeoperand of theinvokedynamicinvocationType- aMethodTypeDescdescribing the invocation type that would appear in theNameAndTypeoperand of theinvokedynamicbootstrapArgs-ConstantDescs describing the static arguments to the bootstrap, that would appear in theBootstrapMethodsattribute- Returns:
- the nominal descriptor
- Throws:
NullPointerException- if any parameter is nullIllegalArgumentException- if the invocation name has the incorrect format- See Java Virtual Machine Specification:
-
4.2.2 Unqualified Names
-
of
public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType)Creates a nominal descriptor for aninvokedynamiccall site whose bootstrap method has no static arguments.- Parameters:
bootstrapMethod- The bootstrap method for theinvokedynamicinvocationName- The invocationName that would appear in theNameAndTypeoperand of theinvokedynamicinvocationType- The invocation invocationType that would appear in theNameAndTypeoperand of theinvokedynamic- Returns:
- the nominal descriptor
- Throws:
NullPointerException- if any parameter is nullIllegalArgumentException- if the invocation name has the incorrect format
-
of
public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod, MethodTypeDesc invocationType)Creates a nominal descriptor for aninvokedynamiccall site whose bootstrap method has no static arguments and for which the name parameter isConstantDescs.DEFAULT_NAME.- Parameters:
bootstrapMethod- aDirectMethodHandleDescdescribing the bootstrap method for theinvokedynamicinvocationType- aMethodTypeDescdescribing the invocation type that would appear in theNameAndTypeoperand of theinvokedynamic- Returns:
- the nominal descriptor
- Throws:
NullPointerException- if any parameter is null
-
withArgs
Returns a nominal descriptor for aninvokedynamiccall site whose bootstrap method, name, and invocation type are the same as this one, but with the specified bootstrap arguments.- Parameters:
bootstrapArgs-ConstantDescs describing the static arguments to the bootstrap, that would appear in theBootstrapMethodsattribute- Returns:
- the nominal descriptor
- Throws:
NullPointerException- if any parameter is null
-
withNameAndType
Returns a nominal descriptor for aninvokedynamiccall site whose bootstrap and bootstrap arguments are the same as this one, but with the specified invocationName and invocation invocationType- Parameters:
invocationName- The unqualified name that would appear in theNameAndTypeoperand of theinvokedynamicinvocationType- aMethodTypeDescdescribing the invocation type that would appear in theNameAndTypeoperand of theinvokedynamic- Returns:
- the nominal descriptor
- Throws:
NullPointerException- if any parameter is nullIllegalArgumentException- if the invocation name has the incorrect format- See Java Virtual Machine Specification:
-
4.2.2 Unqualified Names
-
invocationName
Returns the invocation name that would appear in theNameAndTypeoperand of theinvokedynamic.- Returns:
- the invocation name
-
invocationType
Returns aMethodTypeDescdescribing the invocation type that would appear in theNameAndTypeoperand of theinvokedynamic.- Returns:
- the invocation type
-
bootstrapMethod
Returns aMethodHandleDescdescribing the bootstrap method for theinvokedynamic.- Returns:
- the bootstrap method for the
invokedynamic
-
bootstrapArgs
ReturnsConstantDescs describing the bootstrap arguments for theinvokedynamic. The returned array is always non-null. A zero length array is returned if this DynamicCallSiteDesc has no bootstrap arguments.- Returns:
- the bootstrap arguments for the
invokedynamic
-
resolveCallSiteDesc
Reflectively invokes the bootstrap method with the specified arguments, and return the resultingCallSite- Parameters:
lookup- TheMethodHandles.Lookupused to resolve class names- Returns:
- the
CallSite - Throws:
Throwable- if any exception is thrown by the bootstrap method
-
equals
Compares the specified object with this descriptor for equality. Returnstrueif and only if the specified object is also a DynamicCallSiteDesc, and both descriptors have equal bootstrap methods, bootstrap argument lists, invocation name, and invocation type.- Overrides:
equalsin classObject- Parameters:
o- theDynamicCallSiteDescto compare to thisDynamicCallSiteDesc- Returns:
trueif the specifiedDynamicCallSiteDescis equals to thisDynamicCallSiteDesc.- See Also:
Object.hashCode(),HashMap
-
toString
Returns a compact textual description of this call site description, including the bootstrap method, the invocation name and type, and the static bootstrap arguments.
-