如何在clojure中获取gen类生成的类
我正在使用一些java库,这些库需要访问由如何在clojure中获取gen类生成的类,clojure,Clojure,我正在使用一些java库,这些库需要访问由gen class (ns cljfx.test (:import some.java.Lib)) (gen-class :name Main) (defn -main [& arg] (Lib/method-require-class-arg (classOf Main))) 方法的原型require类arg为 public static void method-require-class-arg(Class someClass)
gen class
(ns cljfx.test
(:import some.java.Lib))
(gen-class :name Main)
(defn -main [& arg]
(Lib/method-require-class-arg (classOf Main)))
方法的原型require类arg
为
public static void method-require-class-arg(Class someClass) {
// ...
}
如何在第一个代码片段中编写
(classOf Main)
部分 您的gen类示例不正确。如果你使用
(gen-class :name cljfx.test.Main)
然后只要cljfx.test.Main
就会返回Class对象。您可以使用Class/forName
方法
例如:(Class/forName“java.lang.String”)
在您的情况下,它应该是(Class/forName“Main”)
,您需要确保在项目中启用aot
。clj是的,抱歉。我已经更新了我的答案,以显示正确的gen类用法。它很有效!非常感谢。在问题中添加缺少的:name
。我仍然很好奇为什么cljfx.test.Main
可以工作,但是Main
(在根包中)不能工作。Clojure不完全支持根包中的类(java无论如何都不推荐)。您可以使用@Ankur提到的Class/forName,但这比直接使用完全限定名要慢。