【问题标题】:how to get the Class generated by gen-class in clojure如何在clojure中获取gen-class生成的类
【发布时间】:2013-04-26 13:56:49
【问题描述】:

我正在使用一些需要访问gen-class 生成的类的java lib

(ns cljfx.test
  (:import some.java.Lib))

(gen-class :name Main)

(defn -main [& arg]
  (Lib/method-require-class-arg (classOf Main)))

method-require-class-arg的原型是

public static void method-require-class-arg(Class someClass) {
  // ...
}

第一个sn-p的(classOf Main)部分怎么写?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    您的gen-class 示例不正确。如果你使用

    (gen-class :name cljfx.test.Main)
    

    那么 cljfx.test.Main 将返回 Class 对象。

    【讨论】:

    • 是的,对不起。我已经更新了我的答案以显示正确的 gen-class 用法。
    • 有效!谢谢你。在问题中添加了缺少的:name。我仍然很好奇为什么cljfx.test.Main 可以工作,而Main(在根包中)却不行。
    • Clojure 不完全支持根包中的类(无论如何,java 不推荐)。您可以使用 @Ankur 提到的 Class/forName,但这比直接使用完全限定名称要慢。
    【解决方案2】:

    您可以使用Class/forName 方法。

    例如:(Class/forName "java.lang.String")

    在您的情况下,它应该是 (Class/forName "Main"),您需要确保在 project.clj 中启用 aot

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 2010-12-07
      • 2014-12-12
      • 1970-01-01
      相关资源
      最近更新 更多