2013-03-14 108 views

回答

1

http://clojure.org/java_interop

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

回报#<ArrayList [[email protected], [email protected]]>

有2种形式的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") 
+0

谢谢我知道如何与arraylist工作,但我不知道如何创建一个对象,并将它们存储在arraylist中,如果有意义的话 – 2013-03-14 10:33:07

+0

@RicardoSanchez hsestupin的答案中的代码确实会创建两个对象并将它们存储在数组列表中。 – sepp2k 2013-03-14 10:36:24

+0

@RicardoSanchez对不起,我没有udnerstand你的意思是什么 – hsestupin 2013-03-14 10:37:49

0

为什么不向量存储?

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

所以LST就像是一个C++结构? – 2013-03-14 10:34:21

+0

@RicardoSanchez不,lst是一个包含矢量的原子。一个原子(有点,有点)就像一个C++中的指针,一个向量就像C++中的一个常量向量。那么这段代码在C++中的作用是:它创建一个名为'lst'的非const指针,指向一个const空向量。然后,它创建一个包含字符串“String”的const向量,并使'lst'指向该向量。然后它创建一个包含'“String”'和'123'的const向量,并使'lst'指向那个。然后它解除指针的引用。请注意,这不是你通常在Clojure中做的事情。 – sepp2k 2013-03-14 10:42:08

相关问题