Maison >Java >javaDidacticiel >Comment puis-je simuler des pointeurs de fonction en Java à l'aide de classes internes anonymes ou d'expressions Lambda ?

Comment puis-je simuler des pointeurs de fonction en Java à l'aide de classes internes anonymes ou d'expressions Lambda ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-20 13:39:22710parcourir

How Can I Simulate Function Pointers in Java Using Anonymous Inner Classes or Lambda Expressions?

Interfaces fonctionnelles comme pointeurs de fonction en Java

En Java, où les pointeurs de fonction ne sont pas disponibles, les classes internes anonymes ou les expressions lambda constituent des alternatives appropriées .

Classes intérieures anonymes

Imaginez vous avez besoin de méthodes qui effectuent des actions similaires mais varient légèrement sur une seule ligne de calcul. Pour implémenter cela à l'aide d'une classe interne anonyme :

  1. Définissez une interface contenant la fonction que vous souhaitez encapsuler.
interface StringFunction {
    int func(String param);
}
  1. Créez une méthode qui accepte un instance de votre interface en tant que paramètre.
public void takingMethod(StringFunction sf) {
    int i = sf.func("my string");
    // Operations...
}
  1. Invoquez la méthode à l'aide d'un nom anonyme classe interne :
ref.takingMethod(new StringFunction() {
    public int func(String param) {
        // Implementation...
    }
});

Expressions lambda (Java 8)

Syntaxiquement plus simple, vous pouvez utiliser des expressions lambda pour obtenir le même résultat :

ref.takingMethod(param -> {
    // Implementation...
});

En utilisant des classes internes anonymes ou des expressions lambda, vous pouvez créer des pointeurs de fonction en Java, améliorant ainsi le code réutilisabilité et flexibilité.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn