Maison  >  Article  >  Java  >  Quelle est l’importance de la classe MethodHandles dans Java 9 ?

Quelle est l’importance de la classe MethodHandles dans Java 9 ?

WBOY
WBOYavant
2023-08-25 17:21:091082parcourir

La classe

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

MethodHandles a été introduite dans la version Java 7. Cette classe ajoute principalement des méthodes statiques pour améliorer les fonctionnalités et est divisée en plusieurs catégories, telles que méthodes de recherche pour créer des descripteurs de méthode pour accéder aux méthodes et aux champs, méthodes combinées pour combiner ou convertir des descripteurs de méthode existants pour de nouveaux descripteurs de méthode. , et méthodes d'usine pour créer des descripteurs de méthode qui simulent d'autres opérations JVM courantes ou des modèles de flux de contrôle. Dans Java 9, la classe MethodHandles a été améliorée, de nombreux changements ont été introduits et de nouvelles méthodes statiques ont été ajoutées comme arrayLength(), arrayConstructor(), zero(), etc. La traduction chinoise de

Grammar

<strong>public class MethodHandles extends Object</strong>

Example

est :

Example

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

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

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

         int x = (int) <strong>MethodHandles.zero</strong>(int.class).<strong>invoke()</strong>;
         System.out.println("Default Value of Primitive Integer using Method Handles is: " + x);
         String y = (String) <strong>MethodHandles.zero</strong>(String.class).<strong>invoke()</strong>;
         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

<strong>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</strong>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer