为什么Groovy的地图没有metaClass?

时间:2013-04-17 13:14:44

标签: groovy metaclass

为什么Groovy的文字地图没有metaClass?

// lists work as expected:
aList = []
println aList.class // class java.util.ArrayList
println aList.metaClass  // gives the full blown metaclass
          //     org.codehaus.groovy.runtime.HandleMetaClass@3de6696c
          //     [groovy.lang.MetaClassImpl@3de6696c[class java.util.ArrayList]]

// string and numbers too:
println ''.metaClass
println 12.metaClass

// map does not:
aMap = [:]
println myMap.metaClass // gives null
println myMap.class // also gives null

经过测试:

Groovy Version: 1.8.6 JVM: 1.6.0_31 Vendor: Sun Microsystems Inc. OS: Linux

1 个答案:

答案 0 :(得分:16)

你必须使用:

[:].getMetaClass()

就像你想获得class的{​​{1}}一样,即:

Map

这是因为当您对它们执行属性查找时,Maps会返回给定键表示的值。否则,您无法使用密钥[:].getClass() class