如何在 Clojure 中创建泛型类型的 Java 对象?

cma*_*mal 0 clojure javaparser

Clojureempty改变了 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
Run Code Online (Sandbox Code Playgroud)

(.setArguments mce ???)需要???是 a NodeList<Expression>,那么如何???在 clojure 中创建一个对象呢?

谢谢!

Eug*_*mov 5

empty仅适用于实现clojure.lang.IPersistentCollection. 它不会用于其他任何事情。

在您的情况下,如果您知道类型是NodeList,只需通过 Java 互操作自行构造它即可。如果您不知道这是NodeList在某些一般情况下,那么您就不走运了,因为您无法基于一个集合类的单一假设来构造任意类的实例。