在Clojure中,如果我有一个命名空间,则How to list the functions of a namespace?的答案很有用,特别是(ns-imports 'my-package)
可以告诉我有关已导入的Java代码的信息。我可以使用(all-ns)
找到 namespace 列表。有没有类似的方法来查找所有可用的Java包的列表,并预览尚未导入的Java类?
我正在从Leiningen分别通过:resource-paths
和:java-source-paths
提供许多JAR和.class文件。但是,由于我是Java代码基础的新手,所以实际上我根本不知道为导入它们而定义了哪些包。我可以使用find,xargs和grep做一些事情,但是最好以编程方式提供此信息。此外,将来,我希望能够从Clojure内部对Java代码库进行“反射”,例如,注意何时定义了新类。
在LISP世界中,有一个名为“do-external-symbols”的函数,我用谷歌搜索,从2007年开始进行this讨论。Clojure本身似乎已经解决了问题,但是关于Clojure的Java观尚不清楚。
最佳答案
如果您使用的是苹果酒/emacs甚至是lein repl
,那么可以通过选项卡按钮访问良好的自动完成功能。
=> (java.lang.B <press tab>
java.lang.Boolean java.lang.BootstrapMethodError java.lang.Byte
该功能似乎由Alexander Yakushev的compliment库驱动,因此建议您仔细了解其工作原理!