On this page
Class DynamicCallSiteDesc
public class DynamicCallSiteDesc extends Object
invokedynamic
call site.
Concrete subtypes of DynamicCallSiteDesc should be immutable and their behavior should not rely on object identity.
- Since:
- 12
Method Summary
Modifier and Type | Method | Description |
---|---|---|
ConstantDesc[] |
bootstrapArgs() |
Returns ConstantDesc s describing the bootstrap arguments for the invokedynamic .
|
MethodHandleDesc |
bootstrapMethod() |
Returns a MethodHandleDesc describing the bootstrap method for the invokedynamic .
|
final boolean |
equals |
Compares the specified object with this descriptor for equality.
|
final int |
hashCode() |
Returns a hash code value for the object.
|
String |
invocationName() |
Returns the invocation name that would appear in the NameAndType operand of the invokedynamic .
|
MethodTypeDesc |
invocationType() |
Returns a MethodTypeDesc describing the invocation type that would appear in the NameAndType operand of the invokedynamic .
|
static DynamicCallSiteDesc |
of |
Creates a nominal descriptor for an invokedynamic call site whose bootstrap method has no static arguments and for which the name parameter is ConstantDescs.DEFAULT_NAME .
|
static DynamicCallSiteDesc |
of |
Creates a nominal descriptor for an invokedynamic call site whose bootstrap method has no static arguments.
|
static DynamicCallSiteDesc |
of |
Creates a nominal descriptor for an invokedynamic call site.
|
CallSite |
resolveCallSiteDesc |
Reflectively invokes the bootstrap method with the specified arguments, and return the resulting CallSite
|
String |
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.
|
DynamicCallSiteDesc |
withArgs |
Returns a nominal descriptor for an invokedynamic call site whose bootstrap method, name, and invocation type are the same as this one, but with the specified bootstrap arguments.
|
DynamicCallSiteDesc |
withNameAndType |
Returns a nominal descriptor for an invokedynamic call 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)
invokedynamic
call site.
- Parameters:
bootstrapMethod
- aDirectMethodHandleDesc
describing the bootstrap method for theinvokedynamic
invocationName
- The unqualified name that would appear in theNameAndType
operand of theinvokedynamic
invocationType
- aMethodTypeDesc
describing the invocation type that would appear in theNameAndType
operand of theinvokedynamic
bootstrapArgs
-ConstantDesc
s describing the static arguments to the bootstrap, that would appear in theBootstrapMethods
attribute- Returns:
- the nominal descriptor
- Throws:
NullPointerException
- if any parameter or its contents arenull
IllegalArgumentException
- 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)
invokedynamic
call site whose bootstrap method has no static arguments.
- Parameters:
bootstrapMethod
- The bootstrap method for theinvokedynamic
invocationName
- The invocationName that would appear in theNameAndType
operand of theinvokedynamic
invocationType
- The invocation invocationType that would appear in theNameAndType
operand 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)
invokedynamic
call site whose bootstrap method has no static arguments and for which the name parameter is ConstantDescs.DEFAULT_NAME
.
- Parameters:
bootstrapMethod
- aDirectMethodHandleDesc
describing the bootstrap method for theinvokedynamic
invocationType
- aMethodTypeDesc
describing the invocation type that would appear in theNameAndType
operand of theinvokedynamic
- Returns:
- the nominal descriptor
- Throws:
NullPointerException
- if any parameter is null
withArgs
public DynamicCallSiteDesc withArgs(ConstantDesc... bootstrapArgs)
invokedynamic
call site whose bootstrap method, name, and invocation type are the same as this one, but with the specified bootstrap arguments.
- Parameters:
bootstrapArgs
-ConstantDesc
s describing the static arguments to the bootstrap, that would appear in theBootstrapMethods
attribute- Returns:
- the nominal descriptor
- Throws:
NullPointerException
- if the argument or its contents arenull
withNameAndType
public DynamicCallSiteDesc withNameAndType(String invocationName, MethodTypeDesc invocationType)
invokedynamic
call 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 theNameAndType
operand of theinvokedynamic
invocationType
- aMethodTypeDesc
describing the invocation type that would appear in theNameAndType
operand 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
public String invocationName()
NameAndType
operand of the invokedynamic
.
- Returns:
- the invocation name
invocationType
public MethodTypeDesc invocationType()
MethodTypeDesc
describing the invocation type that would appear in the NameAndType
operand of the invokedynamic
.
- Returns:
- the invocation type
bootstrapMethod
public MethodHandleDesc bootstrapMethod()
MethodHandleDesc
describing the bootstrap method for the invokedynamic
.
- Returns:
-
the bootstrap method for the
invokedynamic
bootstrapArgs
public ConstantDesc[] bootstrapArgs()
ConstantDesc
s describing the bootstrap arguments for the invokedynamic
. 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
public CallSite resolveCallSiteDesc(MethodHandles.Lookup lookup) throws Throwable
CallSite
- Parameters:
lookup
- TheMethodHandles.Lookup
used to resolve class names- Returns:
-
the
CallSite
- Throws:
Throwable
- if any exception is thrown by the bootstrap method
equals
public final boolean equals(Object o)
true
if 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.
hashCode
public final int hashCode()
Object
HashMap
.
The general contract of hashCode
is:
- Whenever it is invoked on the same object more than once during an execution of a Java application, the
hashCode
method must consistently return the same integer, provided no information used inequals
comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. - If two objects are equal according to the
equals
method, then calling thehashCode
method on each of the two objects must produce the same integer result. - It is not required that if two objects are unequal according to the
equals
method, then calling thehashCode
method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
toString
public String toString()
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/constant/DynamicCallSiteDesc.html