2
Clojure関数でJavaリフレクションメソッドを使用したいと思います。 (.toString {:a 1})
のようなコードは、clojureリーダーで解析しコンパイルすると思います。したがって、clojureマクロを使用して動作します。しかし、実行時にjavaオブジェクトメソッドを呼び出す関数を定義したい場合は失敗します。私はclojureでこの種のコードをどのように呼び出すのか分かりません。ここで実行時にjavaメソッドを呼び出すclojureコードを生成するにはどうすればよいですか?
は私のデモコードです:
(def jmethod ".toString")
(defn call-java-method [mname & body]
(let [fn1 (fn [] `(~(symbol mname) [email protected]))]
(fn1)))
user=> (call-java-method jmethod 3.4M)
結果がリスト(.toString 3.4M)
ですが、私はClojureの関数呼び出しとしてこのリストをevalにしたいです。