Passer des méthodes en tant que paramètres en Java
Java ne prend pas en charge directement le passage de méthodes en tant que paramètres. Cependant, il existe des options alternatives qui peuvent obtenir des fonctionnalités similaires.
Interface comme référence de méthode
Bien que les interfaces ne représentent pas directement les méthodes, elles définissent des signatures de contrat qui appliquent la méthode. implémentations lors de l'instanciation. En créant une interface avec une signature appropriée, nous pouvons l'utiliser pour référencer une méthode spécifique.
Modèle de commande
Le modèle de commande offre une alternative au passage direct des méthodes. Cela implique de créer une interface qui définit la signature de la méthode et d'implémenter cette interface dans une classe concrète. La classe concrète peut ensuite exécuter la fonctionnalité prévue lorsqu'elle est invoquée.
public interface Command { void execute(Object data); } public class PrintCommand implements Command { @Override public void execute(Object data) { System.out.println(data.toString()); } } public static void callCommand(Command command, Object data) { command.execute(data); }
Modèle de visiteur
Une autre option est le modèle de visiteur. Dans cette approche, une classe de visiteur est créée qui définit une méthode pour parcourir les objets. Vos nœuds doivent implémenter une interface adaptée aux visiteurs avec une méthode acceptVisitor(). En fournissant une implémentation concrète de visiteur, vous pouvez définir la fonctionnalité souhaitée pour chaque nœud.
Alors que les interfaces fournissent un moyen simple de référencer une seule méthode, les modèles de commande et de visiteur offrent plus de flexibilité et d'extensibilité. En encapsulant l'invocation de la méthode dans un objet ou une classe personnalisée, il devient plus facile de gérer l'exécution de la méthode, de transmettre des paramètres supplémentaires et de prendre en charge les améliorations futures.
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!