2010-11-06 82 views
7

任何人都可以解釋爲什麼在調用[:]。getClass()時返回預期結果Map的時候調用映射[:]。見下文解決Groovy映射類

1-

["test",[test:"test"],23].each {  
    println it.class 
} 
class java.lang.String 
null 
class java.lang.Integer 

2-

["test",[test:"test"],23].each {  
    println it.getClass() 
} 
class java.lang.String 
class java.util.LinkedHashMap 
class java.lang.Integer 

回答

11

這裏例如是答案

http://jira.codehaus.org/browse/GROOVY-1824

編輯 - 肯定。我認爲地圖的語義是這樣的,如果你有

def m = [one:1, two:2] 

你都應該能夠訪問該條目在地圖上像

m.one 
換句話說

,進入到地圖就像在地圖對象上獲取屬性一樣。如果

m.class 

返回該類,它會破壞這些語義,因爲'class'不是程序員添加到映射的鍵。

那就是我收集的....

+1

很好,他的回答雖然很粗魯,但你能用簡單的英語嗎? – ken 2010-11-06 15:11:37

+0

@ken編輯我的答案與我的解釋 – hvgotcodes 2010-11-06 15:14:26

+1

非常清楚的解釋老兄,這應該是在JIRA問題上的答案,而不是。 – ken 2010-11-06 15:51:49