Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความสำคัญของคลาส MethodHandles ใน Java 9

MethodHandles เพิ่มมาตั้งแต่ Java 7 ปรับปรุงใน Java 9 เพิ่ม static methods ใหม่: arrayLength(), arrayConstructor(), zero() เป็นต้น

หมวดหมู่เมธอด

  • Lookup methods - สร้าง method handles สำหรับเมธอด/ฟิลด์
  • Combinator methods - รวม/แปลง method handles
  • Factory methods - สร้าง method handles เลียนแบบ JVM operations

ตัวอย่างใช้งานเมธอดใหม่ Java 9

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

public class MethodHandlesDemo {
    public static void main(String[] args) throws Throwable {
        // arrayLength - ดึงความยาว array
        MethodHandle mhLen = MethodHandles.arrayLength(int[].class);
        int[] arr = {5, 10, 15, 20};
        int len = (int) mhLen.invoke(arr);
        System.out.println("Array length: " + len); // 4
        
        // arrayConstructor - สร้าง array ใหม่
        MethodHandle mhCon = MethodHandles.arrayConstructor(int[].class);
        int[] newArr = (int[]) mhCon.invoke(3);
        System.out.println("New array size: " + newArr.length); // 3
        
        // zero - ค่า default ของ primitive/reference
        int defInt = (int) MethodHandles.zero(int.class).invoke();
        String defStr = (String) MethodHandles.zero(String.class).invoke();
        System.out.println("Default int: " + defInt);    // 0
        System.out.println("Default String: " + defStr); // null
    }
}

ผลลัพธ์

Array length: 4
New array size: 3
Default int: 0
Default String: null