Importance of MethodHandles class in Java 9?

JavaObject Oriented ProgrammingProgramming

MethodHandles class introduced in Java 7 version. This class primarily added some static methods to better the functionality, and falls into several categories like Lookup methods that help to create method handles for methods and fields, Combinator methods that combine or transform pre-existing method handles into new ones, and factory methods to create method handles that emulate other common JVM operations or control flow patterns. MethodHandles class has enhanced in Java 9 to introduce many changes and added new static methods like arrayLength(), arrayConstructor(), zero(), and etc.

Syntax

public class MethodHandles extends Object

Example

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;

public class MethodHandlesTest {
   public void MethodHandle1() {
      try {
         MethodHandle methodHandleLength = MethodHandles.arrayLength(int[].class);
         int[] array = new int[] {5, 10, 15, 20};
         int arrayLength = (int) methodHandleLength.invoke(array);
         System.out.println("Length of Array using Method Handle is: " + arrayLength);

         MethodHandle methodHandleConstructor = MethodHandles.arrayConstructor(int[].class);
         int[] newArray = (int[]) methodHandleConstructor.invoke(3);
         System.out.println("Array Constructed using Method Handle of Size: " + newArray.length);

         int x = (int) MethodHandles.zero(int.class).invoke();
         System.out.println("Default Value of Primitive Integer using Method Handles is: " + x);
         String y = (String) MethodHandles.zero(String.class).invoke();
         System.out.println("Default Value of String using Method Handles is: " + y);
      } catch(Throwable e) {
         e.printStackTrace();
      }
   }
   public static void main(String args[]) {
      new MethodHandlesTest().MethodHandle1();
   }
}

Output

Length of Array using Method Handle is: 4
Array Constructed using Method Handle of Size: 3
Default Value of Primitive Integer using Method Handles is: 0
Default Value of String using Method Handles is: null
raja
Published on 31-Mar-2020 15:48:15
Advertisements