2015-11-23 4 views
5

ग्रोवी में मैं map literal notation का उपयोग अक्सर अपने कोड में करता हूं, और उत्सुक था कि Map का ठोस कार्यान्वयन क्या था।ग्रोवी: नक्शा पर getClass विधि शाब्दिक रिटर्न शून्य

कुछ चीजें कोशिश कर के बाद, इस स्क्रिप्ट सबसे अच्छा मेरे भ्रम की स्थिति दिखाता है:

[A:B] 
true 
null 

यह मुझसे कहता है कि नक्शा जाहिरा तौर पर एक HashMap है, लेकिन 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 

और इस उत्पादन प्राप्त विधि मुझे यह बताना नहीं चाहता है।

तो मेरा सवाल यह है कि: GetClass वापस शून्य क्यों है, और क्या ग्रोवी से रनटाइम क्लास जानकारी प्राप्त करने का एक और उचित तरीका है?

उत्तर

6

आप एक महत्वपूर्ण class

लगभग Why does groovy .class return a different value than .getClass()

+0

बाह का डुप्लिकेट कहा जाता है के लिए

map.getClass() 

उपयोग करने की आवश्यकता के रूप में नहीं तो यह रहा है, मैं ग्रूवी भी है कि व्याख्या की जा सकती मानचित्र कुंजी के रूप में भूल गया था। धन्यवाद! – Kirie

+2

# ग्रोवी पज़लर, एस 01। – JBaruch

+1

मुझे कभी-कभी आश्चर्य होता है कि समुदाय एक साथ क्यों नहीं आ रहा है और स्क्रिप्टिंग भाषाओं को छोड़ देता है। यह 30 वीं "समस्या" है जब से मैंने ग्रोवी सीखना शुरू कर दिया था, जिसे मैं खुद को ग्रैडल के साथ गति से उठाना चाहता हूं। हर कोई दावा करता है कि स्क्रिप्टिंग भाषा उत्पादकता में सुधार करती है। क्या यह वास्तविकता का मजाक है? जबकि जावास्क्रिप्ट दृढ़ता से टाइप और ऑब्जेक्ट उन्मुख होने की ओर बढ़ता है, JVM- आधारित भाषा विपरीत दिशा में जाती है। इतिहास अपने आप को दोहराता है। –

संबंधित मुद्दे