如何查看与 Clojure 中的对象关联的方法?
在Clojure中,我使用什么函数来查看Java对象的方法?
user=> (some-function some-java-object)
... lots of methods ...
在Clojure中,我使用什么函数来查看Java对象的方法?
user=> (some-function some-java-object)
... lots of methods ...
从版本1.3开始,Clojure与clojure.reflect
命名空间捆绑在一起。反射函数尤其可用于显示对象的所有方法(和其他信息)。它不像 使用起来那么方便。另一方面,它更通用,并且很容易编写自己的版本用作构建块。
show
show
reflect
例如,如果您想查看返回 String 的 String 的所有方法:
user=> (use 'clojure.reflect)
user=> (use 'clojure.pprint)
user=> (->> (reflect "some object")
:members
(filter #(= (:return-type %) 'java.lang.String))
(map #(select-keys % [:name :parameter-types]))
print-table)
使用 java 反射。
(.getClass myObject)
让你上课。要获取方法,
(.getMethods (.getClass myObject))
这为您提供了一系列方法。你可以把它当作一个序列;我可能会把它放到一个向量中,所以:
(vec (.getMethods (.getClass myObject)))