java.lang.String无法强制转换为scala.Serializable

jil*_*len 7 serialization scala

我正在使用scala.Serializable,但是当我调用String.asInstanceOf [Serializable]时,抛出了强制转换异常.这是我的代码,非常简单.

arguments.map(_.asInstanceOf[Serializable])
Run Code Online (Sandbox Code Playgroud)

是的,参数是字符串数组当然
我用scala-ide运行应用程序eclipse与eclipse 3.7和scala 2.9.0-1

查看此文档scala doc

问题现在是"scala.Serializable的典型用例是什么"

Kip*_*ros 10

为了增加Ricky Clarkson的说法,这是有效的

scala> "hi".asInstanceOf[java.io.Serializable]
res7: java.io.Serializable = hi
Run Code Online (Sandbox Code Playgroud)

但这不,

scala> "hi".asInstanceOf[scala.Serializable]
java.lang.ClassCastException: java.lang.String cannot be cast to scala.Serializable
...
Run Code Online (Sandbox Code Playgroud)

没有资格,Serializable在Scala中指的是scala.Serializable.请注意,Scala中的字符串是类型java.lang.String; 它们是JVM的"原生",并且不了解Scala.根据API文档,Scala可序列化特征存在于跨平台兼容性(Java和.NET).如果你只是在JVM上,那就java.io.Serializable足够了.


Ric*_*son 9

那是因为java.lang.String没有实现scala.Serializable.Java与Scala之间没有依赖关系.

我认为你会发现你不需要任何强制转换,因为java.lang.String确实实现了java.io.Serializable,但是你省略的上下文可能会清楚.