Why Groovy's map does not have metaClass?

强颜欢笑 提交于 2020-01-13 09:09:15

问题


Why does Groovy's literal map does not have a 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

Tested with:

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

回答1:


You have to use:

[:].getMetaClass()

The same as if you want to get the class of a Map, ie:

[:].getClass()

this is because Maps return the value represented by the given key when you do a property lookup on them. Otherwise you couldn't have keys class or metaClass



来源:https://stackoverflow.com/questions/16061053/why-groovys-map-does-not-have-metaclass

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!