2010-10-14 16 views
11

मैंग्रोवी डीफ़ और जावा ऑब्जेक्ट के बीच अंतर?

ग्रूवी के बीच अंतर यह पता लगाने की कोशिश कर रहा हूँ:

def name = "stephanie" 

जावा:

Object name = "stephanie" 

दोनों के रूप में है कि में वस्तुओं उन लोगों के साथ बातचीत करने के लिए मैं करने के लिए है के रूप में कार्य करने लगते हैं उन्हें अपने मूल उद्देश्य के प्रकार में डाल दिया।

मैं सी # के गतिशील वर्ग (Java equivalent to C# dynamic class type?) के एक जावा बराबर के लिए एक खोज पर मूल रूप से था और यह ग्रूवी के def

उदाहरण के लिए मेरी ग्रूवी के डीईएफ़ की छाप को देखने के लिए सुझाव दिया गया था कि मैं निम्नलिखित कर सकता है:

def DOB = new Date(1998,5,23); 
int x = DOB.getYear(); 

लेकिन इस अभ्यस्त

धन्यवाद निर्माण, steph

Solu tion संपादित करें: गलती को हल करने के रूप में बदलता है क्योंकि मेरे पास डीएचबी के साथ परिभाषित सार्वजनिक गुणों (डीओबी के ऊपर मेरे उदाहरण में) में एक ग्रोवी क्लास था, लेकिन फिर उन्हें .java क्लास से एक्सेस करने का प्रयास कर रहा था (कॉलिंग के ऊपर मेरे उदाहरण में .getYear() इस पर)। यह एक रूकी गलती है लेकिन समस्या यह है कि ऑब्जेक्ट एक ग्रोवी फ़ाइल छोड़ देता है, इसे केवल ऑब्जेक्ट के रूप में माना जाता है। आपकी सभी मदद का धन्यवाद!

+0

जब आप कहते हैं कि यह 'निर्माण नहीं है', तो क्या आपके पास अपवाद है? –

उत्तर

16

प्रति से, उन दो बयानों के बीच बहुत अंतर नहीं है; लेकिन जब से ग्रूवी एक गतिशील भाषा है, आप

def name = "Stephanie" 
println name.toUpperCase() // no cast required 

लिख सकते हैं, जबकि आप जावा संस्करण

Object name = "Stephanie"; 
System.out.println(((String) name).toUpperCase()); 

कारण है कि में स्पष्ट कलाकारों की आवश्यकता होगी, def निराधार उपयोग की तुलना में ग्रूवी में भी बहुत कुछ समझ में आता है जावा में Object का।

+0

मेरी मूल आशा थी कि डीफ़ ने इस तरह से प्रदर्शन किया लेकिन जब मैंने कुछ ऐसा करने की कोशिश की: 'डीई डीओबी = नई तिथि (1 999,5,2); dob.getYear(); ' यह मुझे –

+1

बनाने और फिर रनटाइम अपवादों को बहने नहीं देगा ... – hvgotcodes

+0

मैंने अभी आपके उदाहरण का प्रयास किया है। टॉपरकेस और यह भी मुझे बनाने की इजाजत नहीं देता .. क्या मुझे कंपाइलर सेटिंग या कुछ याद आ रही है? मैं netbeans का उपयोग कर रहा हूँ 6.9.1 –

4

आप ग्रूवी वेब कंसोल http://groovyconsole.appspot.com/

आपका प्रारंभिक ग्रूवी तारीख उदाहरण काम करता है में ग्रूवी के साथ प्रयोग कर सकते हैं।

+0

लिंक के लिए धन्यवाद .. – Vigneshwaran

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