2011-08-16 152 views
7

我正在使用scala.Serializable,但是當我調用String.asInstanceOf [Serializable]時,類拋出異常被拋出。這是我的代碼,很簡單。java.lang.String不能轉換爲scala.Serializable

arguments.map(_.asInstanceOf[Serializable]) 

是,爭論當然
的字符串數組我與Eclipse 3.7和Scala 2.9.0-1

尋找到這個文件運行使用Scala-IDE應用月食scala doc

現在的問題是「什麼是scala.Serializable的典型使用情況」

+1

所以基普頓的回答顯示瞭如何使這項工作。但我想不出任何情況下這是一件有用的事情。無論你想要做什麼,有可能有更好的方法來做到這一點。 – Lachlan

+0

你好Jilen,你鏈接ScalaDoc的特徵'scala.Serializable'。但'java.lang.String'(你在ScalaDoc中找不到)實際上繼承了'java.io.Serializable'。 –

+0

是的,你是對的。但是...什麼是scala.Serializable打算...它不能事件序列化一個字符串。 – jilen

回答

8

這是因爲java.lang.String中做沒有實現scala.Serializable。從Java到Scala沒有依賴關係。

我想你會發現你不需要任何強制類型轉換,因爲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 
... 

沒有資格,Serializable斯卡拉指scala.Serializable。請注意,Scala中的字符串類型爲java.lang.String;它們對於JVM是「本地的」,並不瞭解Scala。根據API docs,存在用於跨平臺兼容性(Java和.NET)的Scala可序列化特徵。如果你只是在JVM上,那麼java.io.Serializable就足夠了。

相關問題