C’est peut-être quelque chose de commun et trivial, mais il me semble avoir des difficultés à trouver une réponse concrète. En c#, il y a une notion de délégués, qui concerne fortement l’idée de pointeurs de fonction de C++. Existe-t-il une fonctionnalité similaire dans Java ? Étant donné que les pointeurs sont quelque peu absent, ce qui est le meilleur moyen à ce sujet ? Et pour être clair, nous parlons première classe ici.
Réponses
Trop de publicités?Le langage Java pour cette fonctionnalité de pointeur fonction-type est une une classe anonyme qui implémente une interface, par exemple
Mise à jour : ce qui précède est nécessaire dans les versions Java Java 8. Maintenant, nous avons des solutions de rechange beaucoup plus agréables, à savoir les expressions lambda :
et les références de la méthode :
Vous pouvez remplacer un pointeur de fonction avec une interface. Permet de dire que vous voulez exécuter à travers une collection et faire quelque chose avec chaque élément.
Il s’agit de l’interface, que nous pourrions passer à certains disent CollectionUtils2.doFunc (Collection c, IFunction f).
A titre d’exemple que nous avons une collection de nombres, et vous ne souhaitez pas ajouter de 1 à chaque élément.
Vous pouvez utiliser la réflexion pour le faire.
Passer comme paramètre l’objet et le nom de la méthode (sous forme de chaîne) et ensuite appeler la méthode. Par exemple :
Et ensuite l’utiliser comme dans :
Bien sûr, vérifier toutes les exceptions et ajouter les moulages nécessaires.
Désolé de mon mauvais anglais.
Bye !
Non, fonctions ne sont pas des objets de première classe en java. Vous pouvez faire la même chose en implémentant une classe de gestionnaire - c’est comment les rappels sont implémentées dans le Swing, etc..
Il existe cependant des propositions pour les fermetures (le nom officiel de ce que vous parlez) dans les futures versions de java - Javaworld a un article intéressant.
Cela me rappelle les de Steve Yegge l’exécution dans le Royaume des substantifs. Il indique essentiellement que Java a besoin d’un objet pour chaque action et n’a donc pas de « verbe seulement » des entités telles que les pointeurs de fonction.