首页 > 文章列表 > 在Java 9中,MethodHandles类的重要性是什么?

在Java 9中,MethodHandles类的重要性是什么?

408 2023-08-30

MethodHandles 类是在Java 7版本中引入的。该类主要添加了一些静态方法 来改进功能,并分为几个类别,如查找方法 用于创建方法句柄以访问方法和字段,组合方法将现有的方法句柄组合或转换为新的方法句柄,以及工厂方法用于创建模拟其他常见JVM操作或控制流模式的方法句柄。在Java 9中,MethodHandles 类进行了增强,引入了许多变化,并添加了新的静态方法,如arrayLength()arrayConstructor()zero()等。

语法

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();
   }
}

输出

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