invisible meerkat invisible meerkat - 1 year ago 92
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 Source

You can simply reify an interface.

Here is an example

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