为什么Groovy的map没有metaClass?

8
为什么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个回答

17

你需要使用:

[:].getMetaClass()

如果您想获取 Mapclass,方法与上面相同:

[:].getClass()

这是因为当您在地图上进行属性查找时,它会返回由给定键表示的值。否则,您将无法拥有键classmetaClass


关于相关主题,是否有一种方法可以在实现map的类中使用missingProperty?好的,我会发布另一个问题... - Philippe
请参见以下链接:http://stackoverflow.com/questions/29042449/how-to-use-propertymissing-on-a-class-that-implements-java-util-map-in-groovy - Philippe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接