Прежде всего, вы не можете передать статический метод как функцию - вы должны будете обернуть его в anon-fn.
Кроме того, это не будет работать, потому что эта структура ожидает экземплярытам реализуют определенные интерфейсы.Начиная с Java8, вы можете написать это как лямбды и javac, чтобы заполнить пробелы для вас, если интерфейс имеет только один метод.
Таким образом, вы не можете просто передать функцию Clojure, которая реализует, например, IFn
иRunnable
, но не тот конкретный интерфейс, необходимый там.Таким образом, вам придется посмотреть вверх из документов, что разрешено и reify
.
Например, с Rapidoid 5.5.5, это может выглядеть так:
(ns try-rapidoid.core
(:import (org.rapidoid.http ReqHandler)
(org.rapidoid.setup On Setup)))
(def echo-route
(doto
(On/get "/echo")
(.managed true)
(.json (reify ReqHandler ; XXX
(execute [this ^Object req]
(.headers req))))))
#_(Setup/shutdownAll)