2015-11-23 17 views
5

Groovy'de map literal notation kodumu çok sık kullanıyorum ve Map somut uygulamasının ne olduğunu merak ediyordum.Groovy: getClass yöntemi haritada literal döndürür null

[A:B] 
true 
null 

Bu harita görünüşte bir HashMap olduğunu söyler, ama getClass:

def map = ["A":"B"] 
println map // I assume this avoids any lazy evaluation of the map 
println map instanceof HashMap // I tried some other impls too 
println map.class 

ve bu çıktıyı alırsınız: bir kaç şey denedikten sonra

, bu yazı en iyi benim karışıklığı göstermektedir Metod bana bunu söylemek istemiyor.

Sorularım: neden getClass null değerini döndürüyor ve Groovy'den runtime sınıf bilgisi almak için daha uygun bir yol var mı?

cevap

6
+0

Bah class

Yaklaşık bir yinelenen adlı bir anahtar için

map.getClass() 

kullanmak gibi aksi takdirde bakıyor gerekiyor, Groovy bir de harita anahtarı olarak bu yorumlayabiliriz unuttum. Teşekkürler! – Kirie

+2

#GroovyPuzzlers, S01. – JBaruch

+1

Bazen topluluğun neden bir araya gelmediğini ve yazı dillerini değiştirmediğini merak ediyorum. Bu, Groovy'i öğrenmeye başladığımdan beri 30'ların “problemi” oldu. Kendimi Gradle'la hızlandırmak istiyorsam, daha çok veya daha azım olacak. Herkes, betik dillerinin üretkenliği artırdığını iddia ediyor. Bu gerçek bir alay mı? JavaScript güçlü bir şekilde yazılmaya ve nesne yönelimli olmaya doğru ilerlerken, JVM tabanlı diller tersi yönde ilerler. Tarih kendini tekrar eder. –

İlgili konular