我正在使用scala.Serializable,但是当我调用String.asInstanceOf [Serializable]时,会抛出类强制转换异常。这是我的代码,很简单。
arguments.map(_.asInstanceOf[Serializable])
是的,参数是字符串数组
我使用scala-ide运行应用程序eclipse与eclipse 3.7和scala 2.9.0-1
查看此文档scala doc
问题现在是“scala.Serializable的典型用例是什么”
答案 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,但是你省略的上下文可能会清楚。