【发布时间】:2016-10-23 06:36:35
【问题描述】:
我想在 Clojure 函数中使用 Java 反射方法。
我认为像(.toString {:a 1}) 这样的代码将由clojure reader 解析和编译。因此,它通过使用 clojure 宏来工作。但是如果我想定义一个函数来在运行时调用 java 对象方法,它就失败了。我不知道如何在 clojure 中调用这种代码。
这是我的演示代码:
(def jmethod ".toString")
(defn call-java-method [mname & body]
(let [fn1 (fn [] `(~(symbol mname) ~@body))]
(fn1)))
user=> (call-java-method jmethod 3.4M)
结果是一个列表 (.toString 3.4M) ,但我想将此列表评估为 clojure 函数调用。
【问题讨论】: