这是我的问题:假设我需要clojure.reflect :as r
,然后,例如,做
(->> (r/reflect java.lang.String)
:members
(filter #(= (:name %) 'getBytes))
first
:return-type)
Run Code Online (Sandbox Code Playgroud)
这将评估byte<>
哪个是符号.我怎么可以映射符号到Java类,那就是,我怎么能写一个函数type-symbol-to-class
,使得
(assert
(= (class (byte-array [1 2 3]))
(type-symbol-to-class 'byte<>)))
Run Code Online (Sandbox Code Playgroud)
不抛出异常?如果该函数适用于更多符号而不仅仅是好的byte<>
.
Clojure的反射库做了很多工作(的1,2,3),以美化输出(包括参数/返回类型名称),并且它不是一个简单的任务来执行反向变换.
如果需要Class
对象,可以使用Java的反射工具而不是clojure.reflect
:
(= (->> java.lang.String
.getDeclaredMethods
(filter #(= (.getName %) "getBytes"))
first
.getReturnType)
(class (byte-array [1 2 3]))) # -> true
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
133 次 |
最近记录: |