Я использую gen-class для генерации Java-классов из моего кода Clojure. Чтобы сделать работу gen-class, мне нужно добавить дополнительный первый параметр ко всем методам, которые будут добавлены в класс (здесь называется this
).Как вызвать метод gen-class из clojure
(ns com.stackoverflow.clojure.testGenClass
(:gen-class
:name com.stackoverflow.clojure.TestGenClass
:implements [com.stackoverflow.clojure.TestGenClassInterface]
:prefix "java-"))
(def ^:private pre "START: ")
(defn java-addToString [this text post]
(str pre text post))
После компиляции вызов метода в контексте Java отлично работает.
(def var (com.stackoverflow.clojure.TestGenClass.))
(.addToString var "Aus Clojure heraus (Methode 1)." " :ENDE")
(. var addToString "Aus Clojure heraus (Methode 2)." " :ENDE")
Но как я могу начать его непосредственно с Clojure?
Thge нижеследующий не работает, поскольку первый параметр отсутствует.
(java-addToString "TexT" " :END")
Полезно ли просто вызвать функцию с пустым первым параметром?
(java-addToString "" "TexT" " :END")
Или я должен добавить функцию (например, addToString
), что я использую внутренне и вызвать эту функцию из одного, который будет добавлен в качестве метода класса-файл?