如何在 Clojure 中制作 Java 泛型对象?
How to make a Java object of generic type, in Clojure?
Clojure empty
改变了 Java 集合的类型。
例如 JavaParser
MethodCallExpr
对象 mce
,
(type (.getArguments mce))
;; => com.github.javaparser.ast.NodeList
(type (emtpy (.getArguments mce)))
;; => nil
(type (into (empty (.getArguments mce)) (.getArguments mce)))
;; => clojure.lang.PersistentList
但是(.setArguments mce ???)
需要???
成为NodeList<Expression>
,那么如何在clojure中创建对象???
?
谢谢!
empty
仅适用于实现 clojure.lang.IPersistentCollection
的 classes。它对其他任何东西都不起作用。
在您的情况下,如果您知道类型是 NodeList
,只需通过 Java 互操作自行构造它。
如果在某些一般情况下你不知道它是 NodeList
,那你就倒霉了,因为你不能基于一个假设它是一个集合 class 来构造一个任意的实例 class.
Clojure empty
改变了 Java 集合的类型。
例如 JavaParser
MethodCallExpr
对象 mce
,
(type (.getArguments mce))
;; => com.github.javaparser.ast.NodeList
(type (emtpy (.getArguments mce)))
;; => nil
(type (into (empty (.getArguments mce)) (.getArguments mce)))
;; => clojure.lang.PersistentList
但是(.setArguments mce ???)
需要???
成为NodeList<Expression>
,那么如何在clojure中创建对象???
?
谢谢!
empty
仅适用于实现 clojure.lang.IPersistentCollection
的 classes。它对其他任何东西都不起作用。
在您的情况下,如果您知道类型是 NodeList
,只需通过 Java 互操作自行构造它。
如果在某些一般情况下你不知道它是 NodeList
,那你就倒霉了,因为你不能基于一个假设它是一个集合 class 来构造一个任意的实例 class.