如何在 clojure 中间接将 class 传递给 new
How do I pass a class to new indirectly in clojure
我有一个 clojure class(一个带有 (:gen-class)
子句的命名空间)。
然后我需要将构造的对象传递给 java 函数。
这有效
(java_function (my-clojure-class.))
但是,如果我需要间接引用 class,就会遇到一些问题
因为 new
不计算它的参数。我可以使用
得到想要的结果
(let [my-class my-clojure-class]
(java_function
(eval `(new ~(symbol (. my-class getName))))))
虽然这行得通,但感觉很笨重。有更简洁的方法还是我遗漏了什么?
我会使用 newInstance method to create a new instance from my-class
that is of type java.lang.Class:
(let [my-class my-clojure-class]
(java_function (.newInstance my-class)))
我有一个 clojure class(一个带有 (:gen-class)
子句的命名空间)。
然后我需要将构造的对象传递给 java 函数。
这有效
(java_function (my-clojure-class.))
但是,如果我需要间接引用 class,就会遇到一些问题
因为 new
不计算它的参数。我可以使用
(let [my-class my-clojure-class]
(java_function
(eval `(new ~(symbol (. my-class getName))))))
虽然这行得通,但感觉很笨重。有更简洁的方法还是我遗漏了什么?
我会使用 newInstance method to create a new instance from my-class
that is of type java.lang.Class:
(let [my-class my-clojure-class]
(java_function (.newInstance my-class)))