Maison >Java >javaDidacticiel >Quelle est la meilleure façon de simuler des pointeurs de fonction en Java ?

Quelle est la meilleure façon de simuler des pointeurs de fonction en Java ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-02 19:57:10890parcourir

What's the Best Way to Simulate Function Pointers in Java?

Alternative la plus proche aux pointeurs de fonction en Java

Java manque de pointeurs de fonction, ce qui présente un défi lors de la création de méthodes qui effectuent des tâches similaires avec des variations mineures. Pour résoudre ce problème, une alternative appropriée consiste à utiliser des classes internes anonymes.

Solution de classe interne anonyme

Une classe interne anonyme vous permet de définir une méthode sans créer de classe interne nommée distincte. classe. Il suit le modèle consistant à définir une interface avec la méthode requise et à l'implémenter dans une classe interne anonyme.

Par exemple, considérons une méthode qui prend une chaîne comme paramètre et renvoie un entier. Tout d'abord, définissez une interface :

interface StringFunction {
    int func(String param);
}

Une méthode qui accepte un pointeur vers cette fonction ressemblerait à ceci :

public void takingMethod(StringFunction sf) {
   int i = sf.func("my string");
   // do whatever ...
}

Pour appeler cette méthode, créez une classe interne anonyme implémentant le interface :

ref.takingMethod(new StringFunction() {
    public int func(String param) {
        // body
    }
});

Alternativement, Java 8 introduit des expressions lambda, qui fournissent une syntaxe plus concise pour cela objectif :

ref.takingMethod(param -> bodyExpression);

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