解决Groovy映射类

问题描述:

任何人都可以解释为什么在调用[:]。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 

这里例如是答案

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