如何在 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)))