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
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With