如何在Clojure中创建“对象”的多个实例?

时间:2013-03-14 09:37:11

标签: oop clojure

我可以使用哪种Clojure方法在对象上创建多个实例然后存储在Java ArrayList中?

我知道如何在Java中执行此操作,但我不确定如何继续使用Clojure,任何帮助/指针都将非常感激

2 个答案:

答案 0 :(得分:1)

查看http://clojure.org/java_interop

(doto (new java.util.ArrayList) 
    (.add (new Object)) 
    (.add (new Object))) 

返回#<ArrayList [java.lang.Object@5ae7fa2, java.lang.Object@33d6798]>

有两种形式可以在clojure中创建新对象。

(Classname. args*)
(new Classname args*)

所以这里是如何在clojure中创建java对象的简单示例。首先是它在Java中的表现:

Thread thread = new Thread("Hi there");

Clojure的

; return instance of java.lang.Thread class
(new Thread "Hi there")

或其他方式

(Thread. "Hi there")

答案 1 :(得分:0)

为什么不存储在矢量中?

user=> (def lst (atom []))
user=> (swap! lst conj "String")
user=> (swap! lst conj 123)
user=> @lst
["String" 123]