2011-08-16 11 views
7

मैं scala.Serializable उपयोग कर रहा हूँ scala.Serializable पर कास्ट कर सकते नहीं होगा, लेकिन जब मैं String.asInstanceOf [Serializable] आह्वान, वर्ग डाली अपवाद फेंक दिया है। मेरा कोड, बहुत सरल है।java.lang.String

arguments.map(_.asInstanceOf[Serializable]) 

हाँ, तर्क पाठ्यक्रम
की स्ट्रिंग की सरणी मैं ग्रहण 3.7 और स्केला 2.9.0-1

इस दस्तावेज़ में देख के साथ ग्रहण के लिए स्केला-आईडीई के साथ एप्लिकेशन को चलाने रहा है scala doc

समस्या अब है ऐसा इसलिए है क्योंकि java.lang.String करता है

+1

तो किपटन का जवाब दिखाता है कि यह काम कैसे करें। लेकिन मैं किसी भी परिस्थिति के बारे में नहीं सोच सकता जहां यह करने के लिए एक उपयोगी बात है। जो कुछ भी आप करने की कोशिश कर रहे हैं, वहां ऐसा करने का एक बेहतर तरीका है। – Lachlan

+0

हाय जिलन, आपने स्कालाडॉक को विशेषता 'स्काला। सेरियलज़ेबल' के लिए जोड़ा है। लेकिन 'java.lang.String' (जिसे आप स्कालाडोक में नहीं पाएंगे) वास्तव में' java.io.Serializable' प्राप्त करता है। –

+0

हाँ, आप सही हैं। लेकिन ... स्कैला क्या है। सरलीकृत करने का इरादा ... यह घटना स्ट्रिंग को क्रमबद्ध नहीं कर सकता है। – jilen

उत्तर

8

"क्या scala.Serializable की विशिष्ट उपयोग के मामले है" Scala लागू नहीं। Serializable। जावा से स्कैला तक कोई निर्भरता नहीं है।

मुझे लगता है कि आपको लगता है कि आपको किसी भी कलाकार की आवश्यकता नहीं है, क्योंकि java.lang.String java.io.Serializable को लागू करता है, लेकिन शायद आपके द्वारा छोड़ा गया संदर्भ स्पष्ट हो जाएगा।

9

क्या रिकी क्लार्कसन ने कहा करने के लिए जोड़ने के लिए, यह काम करता है

scala> "hi".asInstanceOf[java.io.Serializable] 
res7: java.io.Serializable = hi 

लेकिन यह नहीं है,

scala> "hi".asInstanceOf[scala.Serializable] 
java.lang.ClassCastException: java.lang.String cannot be cast to scala.Serializable 
... 
योग्यता के बिना स्काला में

, Serializablescala.Serializable को दर्शाता है। ध्यान दें कि स्कैला में तार java.lang.String प्रकार हैं; वे JVM के लिए "मूल" हैं और स्कैला के बारे में नहीं जानते हैं। API docs के अनुसार, स्कैला सीरियलज़ेबल विशेषता क्रॉस प्लेटफार्म संगतता (जावा और .NET) के लिए मौजूद है। यदि आप केवल JVM पर हैं, तो java.io.Serializable पर्याप्त होना चाहिए।

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