Java équivalent de C# Délégués (les files d'attente des méthodes de classes différentes à exécuter)
TLDR:
Est-il un Java équivalent de C#'s les délégués qui va me permettre de faire la queue méthodes de différentes classes et les ajouter à la file d'attente de façon dynamique? Les constructions de langage, plutôt que le code pour cela.
Contexte:
J'ai utilisé Unity 3D avant et j'aime les choses comme le Update
méthode de scripts. Déclarant simplement la méthode ajoute à la liste des méthodes exécutées chaque image. Je veux créer quelque chose comme ça dans mon LWJGL jeu. Pour cela, je voudrais utiliser les délégués (ou l'équivalent). Est-il Java construction du langage qui me permettrait de faire cela? Je préfère des réponses qui comprennent deux ou plusieurs (de sorte que je peux choisir qui sera la plus optimale pour mon code) des constructions et de la façon de les utiliser. Je ne veux pas le code, je veux juste savoir par où commencer. La partie la plus sympa de la programmation est de travailler le problème et je ne veux pas en être privé. Aussi, je ne veux pas être dit EXACTEMENT comment le faire. Je veux être guidés dans la bonne direction au lieu d'être jetés dans cette direction sur cette destination. Comment puis-je apprendre? 🙂
Vous devez vous connecter pour publier un commentaire.
Extrait de https://msdn.microsoft.com/en-gb/library/aa288459(v=vs. 71).aspx :
Cela dit, Java n'a pas de délégués comme le C#. Cependant, depuis Java 8, nous avons une sorte de pointeurs de fonction en utilisant méthode des références et des interfaces fonctionnelles.
Que vous poliment demandé, je ne vais pas vous dire exactement comment mettre en œuvre ce code, mais vous devriez être capable de trouver une solution à cette information.
En fait il n'y a pas d'équivalent exact pour les délégués en Java. Mais il y a des constructions qui imitent leur comportement.
Java 8
Interfaces fonctionnelles
Le concept qui se ferme aux délégués dans Java 8 est celle de l' interfaces fonctionnelles.
Par exemple, si vous avez un C# délégué:
en Java, vous pouvez créer une interface fonctionnelle comme:
La bonne chose à propos d'interfaces fonctionnelles, c'est qu'ils peuvent être facilement utilisés dans les expressions lambda.
Exemple
Donc, supposons que vous avez la classe suivante:
Les expressions Lambda et de la méthode références
Avec Java 8, vous obtenez des expressions lambda.
Il y a un court de main nommé méthode de référence pour cela, si vous en fait tout simplement appeler une méthode:
Java 7
Avec Java 7, la seule chose que vous pouvez utiliser est les classes anonymes:
J'espère que ce n'était pas trop d'informations, vous pouvez encore apprendre. 😉
Cependant, j'aime ma réponse également être utile pour d'autres personnes à la recherche de cette question.