Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9에서 MethodHandles 클래스의 중요성?


메소드 핸들 자바 7에 도입된 클래스 버전. 이 클래스는 주로 몇 가지 정적 방법 기능을 개선하고 조회 방법 과 같은 여러 범주로 나뉩니다. 메서드 및 필드에 대한 메서드 핸들을 만드는 데 도움이 되는 조합 메서드 기존 메소드 핸들을 결합하거나 새로운 핸들로 변환하는 팩토리 메소드 다른 일반적인 JVM 작업을 에뮬레이트하거나 흐름 패턴을 제어하는 ​​메서드 핸들을 생성합니다. 메서드 핸들 Java 9에서 클래스가 향상되어 많은 변경 사항이 도입되고 arrayLength()와 같은 새로운 정적 메서드가 추가되었습니다. , 배열 생성자() , 제로() , 등

구문

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