Java 9 中 MethodHandles 類的重要性?


MethodHandles 類在Java 7版本中引入。此類主要添加了一些static 方法 以增強功能,並分為幾類,如Lookup 方法 (幫助建立方法和欄位的方法控制代碼)、Combinator 方法(將已有的方法控制代碼組合或轉換成為新的方法控制代碼)以及factory 方法(建立方法控制代碼以模擬其他常見的 JVM 操作或控制流模式)。MethodHandles 類在 Java 9 中得到了增強,引入了許多更改並添加了新的靜態方法,如 arrayLength()arrayConstructor()zero() 等。

語法

public class MethodHandles extends Object

示例

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

更新於: 2020 年 3 月 31 日

199 瀏覽

助力你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.