Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在clojure中获取gen类生成的类_Clojure - Fatal编程技术网

如何在clojure中获取gen类生成的类

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

我正在使用一些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) {
  // ...
}

如何在第一个代码片段中编写
(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,但这比直接使用完全限定名要慢。