invisible meerkat invisible meerkat - 3 months ago 17
Java Question

Java lambda callback in clojure

I use a java library in clojure and it has a function that accepts a callback:

http://home.dv8tion.net:8080/job/JDA/Promoted%20Build/javadoc/net/dv8tion/jda/entities/MessageChannel.html#sendMessageAsync-java.lang.String-java.util.function.Consumer-

How do I pass such callback in clojure? I tried anonymous function

fn
but it doesn't work. In java using java lambdas works.

Answer

You can simply reify an interface.

Here is an example

(def consumer (reify java.util.function.Consumer
                (accept [this t]
                  ; here the impl 
                  )))