2011-08-23 13 views
32

मान लीजिए मैं निम्नलिखित जावा विधिस्कैला में, किसी भी और ऑब्जेक्ट के बीच क्या अंतर है?

protected void onEvent(Object obj) { 

    } 

स्काला संकलक

protected override def onEvent(event: Any) 

और

protected override def onEvent(event: Object) 

इन दोनों के बीच कोई अंतर है स्वीकार करता है?

उत्तर

23

(मैं भी दीवार पर डाल) पर महान चित्र के साथ स्केला-लैंग एक article नहीं है। तो अगर आप एक जावा विधि वस्तु का उपयोग करता है करने के लिए प्रयास कर रहे हैं अगर आप एक आदिम में पास या यह परोक्ष बदल जाती है किसी भी मुसीबत में आप प्राप्त करता है

If Scala is used in the context of a Java runtime environment, then scala.AnyRef corresponds to java.lang.Object.

+3

सही ध्यान दें कि' 'AnyRef' Any', लेकिन एक उपवर्ग नहीं है' Any' उपवर्ग 'AnyVal' भी है –

+0

@ ।।।? अर्नेस्ट हाँ चार्ट से पता चलता है कि यह बहुत स्पष्ट समझ में नहीं आ वहाँ कुछ मैं याद किया – 4e6

+3

नहीं है, आप कुछ भी न था, मैं सिर्फ लोग हैं, जो लिंक का पालन नहीं किया के लिए स्पष्ट करना चाहता था। –

21

Any में ऐसी चीजें शामिल हैं जो जावा में Object एस नहीं हैं; इसमें आदिम प्रकार और Nothing शामिल हैं। Object जावा में समान वर्ग है, इसलिए यह निश्चित रूप से प्राइमेटिव को बाहर करता है।

+6

,: और यह भी उल्लेख किया जाने की जरूरत है? –

+0

@JamesMcMahon मुझे आश्चर्य है। – 2rs2ts

+0

@ जेम्स मैंने कोशिश की 'def def (a: java.lang.Object) = {}; वैल i = 10; मिले (i) 'और यहां संकलक से आउटपुट है: * त्रुटि: किसी अंतर्निहित रूपांतरण का परिणाम प्रकार AnyRef * http://stackoverflow.com/a/26550576/4541480 से अधिक विशिष्ट होना चाहिए, यह' val i के साथ काम करता है: java.lang.Integer = 10' (डिफ़ॉल्ट के साथ 'वैल मैं:।।। इंट = 10' – Nicofisi

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