J'essaye de 'implémenter' l'interface Java suivante de JGroups avec reify
. Dans ce cas, la méthode de réception est présente deux fois, avec un paramètre chacun (et différents types, bien sûr). Lorsque je tente de reify
avec le code suivant dans CIDRE:Comment réifier des interfaces Java avec une méthode surchargée?
(reify org.jgroups.MessageListener (receive[#^org.jgroups.Message msg]
(println msg)))
Je reçois un message d'erreur:
CompilerException java.lang.IllegalArgumentException: Can't define method not in interfaces: receive, compiling:(*cider-repl clj-groups*:49:21)
Comme receive
est certainement disponible dans l'interface, je suppose que cette question est liée à la méthode surchargée et mon indice de type ne fonctionne pas. Qu'est-ce que je fais mal?
Edit: Après avoir modifié le code suivant Lees commentaire:
(reify org.jgroups.MessageListener (receive[this #^org.jgroups.Message msg]
(println msg)))
le message d'erreur a changé:
CompilerException java.lang.IllegalArgumentException: Mismatched return type: receive, expected: void, had: java.lang.Object, compiling:(*cider-repl clj-groups*:80:21)
Vous devez au moins ajouter un paramètre 'this': ce msg] ...) '. – Lee
http://stackoverflow.com/questions/21000267/clojure-reify-a-java-interface-with-overloaded-methods – mishadoff
Possible duplication de [Clojure reify une interface Java avec des méthodes surchargées] (http://stackoverflow.com/questions/21000267/clojure-reify-a-java-interface-with-overloaded-methods) – mishadoff