7

为什么 Groovy 的文字映射没有元类?

// 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
4

1 回答 1

16

你必须使用:

[:].getMetaClass()

就像你想得到classa一样Map,即:

[:].getClass()

这是因为当您在地图上进行属性查找时,地图会返回由给定键表示的值。否则你不能有钥匙classmetaClass

于 2013-04-17T13:17:00.643 回答