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 から直接起動するにはどうすればよいでしょうか?
最初のパラメーターが欠落しているため、次のことは機能しません。
(java-addToString "TexT" " :END")
空の最初のパラメーターで関数を呼び出すのは良い習慣ですか?
(java-addToString "" "TexT" " :END")
または、addToString
内部で使用する関数 (例: ) を追加し、メソッドとしてクラス ファイルに追加される関数からこの関数を呼び出す必要がありますか?