hashCode(): This method is available in the java.lang.constant.DynamicCallSiteDesc class of Java.
Syntax:
int java.lang.constant.DynamicCallSiteDesc.hashCode()
This method returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.
The general contract of hashCode is:
1. 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 in equals 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.
2. If two objects are equal according to the equals(Object)method, then calling the hashCode method on each of the two objects must produce the same integer result.
3. It is not required that two objects are unequal according to the java.lang.Object.equals(java.lang.Object)method, then calling the hashCode 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.
Parameters: NA
Returns: a hash code value for this object.
Exceptions: NA
Approach
Java
package com.DynamicCallSiteDesc;import java.lang.constant.ClassDesc;import java.lang.constant.DirectMethodHandleDesc;import java.lang.constant.DynamicCallSiteDesc;import java.lang.constant.MethodTypeDesc;import java.lang.invoke.MethodHandles.Lookup;public class DynamicCallSiteDeschashCode {public static void main(String[] args) {DirectMethodHandleDesc desc = new DirectMethodHandleDesc() {@Overridepublic Object resolveConstantDesc(Lookup lookup) throws ReflectiveOperationException {return "Hello";}@Overridepublic MethodTypeDesc invocationType() {return MethodTypeDesc.of(ClassDesc.of("name"), ClassDesc.of("name"));}@Overridepublic int refKind() {return 0;}@Overridepublic ClassDesc owner() {return ClassDesc.of("name");}@Overridepublic String methodName() {return "name";}@Overridepublic String lookupDescriptor() {return "LookupDescriptor";}@Overridepublic Kind kind() {return Kind.CONSTRUCTOR;}@Overridepublic boolean isOwnerInterface() {return true;}};DynamicCallSiteDesc dynamicCallSiteDesc = DynamicCallSiteDesc.of(desc,MethodTypeDesc.of(ClassDesc.of("name"), ClassDesc.of("name")));System.out.println(dynamicCallSiteDesc.hashCode());}}
Output:
-1160217182
Some other methods of DynamicCallSiteDesc
bootstrapArgs(): This method returns ConstantDescs describing the bootstrap arguments for the invoke dynamic.
bootstrapMethod(): This method returns a MethodHandleDesc describing the bootstrap method for the invoke dynamic.
equals(Object): This method compares the specified object with this descriptor for equality.
hashCode(): This method returns a hash code value for the object.
invocationName(): This method returns the invocation name that would appear in the NameAndType operand of the invoke dynamic.
invocationType(): This method returns a MethodTypeDesc describing the invocation type that would appear in the NameAndType operand of the invoke dynamic.
DynamicCallSiteDesc.of(DirectMethodHandleDesc, MethodTypeDesc): This method creates a nominal descriptor for an invoke dynamic call site whose bootstrap method has no static arguments and for which the name parameter is ConstantDescs.DEFAULT_NAME.
DynamicCallSiteDesc.of(DirectMethodHandleDesc, String, MethodTypeDesc): This method creates a nominal descriptor for an invokes dynamic call site whose bootstrap method has no static arguments.
DynamicCallSiteDesc.of(DirectMethodHandleDesc, String, MethodTypeDesc, ConstantDesc...): This method creates a nominal descriptor for an invoke dynamic call site.
resolveCallSiteDesc(Lookup): This method reflectively invokes the bootstrap method with the specified arguments and returns the resulting CallSite.
toString(): This method returns a compact textual description of this call site description, including the bootstrap method, the invocation name and type, and the static bootstrap arguments.
withArgs(ConstantDesc...): This method returns a nominal descriptor for an invoke dynamic call site whose bootstrap method, name, and invocation type are the same as this one, but with the specified bootstrap arguments.
withNameAndType(String, MethodTypeDesc): This method returns a nominal descriptor for an invoke dynamic call site whose bootstrap and bootstrap arguments are the same as this one, but with the specified invocationName and invocation invocationType.
No comments:
Post a Comment