我正在使用 gen-class 从我的 Clojure 代码生成 Java 类。为了使 gen-class 工作,我需要为将添加到类中的所有方法添加一个额外的第一个参数(这里称为this
)。
(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
)并从将作为方法添加到类文件的函数中调用这个函数?