2013-04-17 78 views
7

爲什麼Groovy的文字地圖沒有metaClass?爲什麼Groovy的地圖沒有metaClass?

// lists work as expected: 
aList = [] 
println aList.class // class java.util.ArrayList 
println aList.metaClass // gives the full blown metaclass 
      //  [email protected] 
      //  [[email protected][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 

回答

16

你必須使用:

[:].getMetaClass() 

一樣的,如果你想獲得一個Mapclass,即:

[:].getClass() 

這是因爲當你對它們進行屬性查詢時,使用Maps會返回給定鍵表示的值。否則你不可能有鑰匙classmetaClass

+0

哦,你是如此的正確!爲什麼我以前沒有想到這一點? :) – elias

+0

在相關主題上,是否有一種方法使用missingProperty來實現map的類?好吧,我會發布另一個問題... – Philippe

+0

請參閱http://stackoverflow.com/questions/29042449/how-to-use-propertymissing-on-a-class-that-implements-java-util-map-in -groovy – Philippe

相關問題