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

时间:2011-08-16 03:35:07

标签: scala serialization

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

arguments.map(_.asInstanceOf[Serializable])

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

查看此文档scala doc

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

2 个答案:

答案 0 :(得分:10)

要添加Ricky Clarkson所说的,这是有效的

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
...

没有资格,Scala中的Serializable会引用scala.Serializable。请注意,Scala中的字符串类型为java.lang.String;它们是JVM的“原生”,并且不了解Scala。根据{{​​3}},Scala可序列化特征存在于跨平台兼容性(Java和.NET)。如果您只是在JVM上,那么java.io.Serializable就足够了。

答案 1 :(得分:9)

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

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

相关问题