2011-08-16 40 views
7

Estoy usando scala.Serializable, pero cuando invoco String.asInstanceOf [Serializable], se lanza class cast exception. Aquí está mi código, bastante simple.java.lang.String no se puede convertir a scala.Serializable

arguments.map(_.asInstanceOf[Serializable]) 

Sí, argumentos es array de cadenas, por supuesto
estoy ejecutar la aplicación con scala-IDE para Eclipse con Eclipse 3.7 y Scala 2.9.0-1

mirar en esta documentación scala doc

el problema ahora es "¿cuál es el caso de uso típico de scala.Serializable"

+1

Así que la respuesta de Kipton muestra cómo hacer que esto funcione. Pero no puedo pensar en ninguna situación en la que sea útil hacerlo. Lo que sea que intentes hacer, es probable que haya una mejor manera de hacerlo. – Lachlan

+0

Hola Jilen, vinculaste el ScalaDoc para el rasgo 'scala.Serializable'. Pero 'java.lang.String' (que no encontrará en el ScalaDoc) realmente hereda' java.io.Serializable'. –

+0

Sí, tienes razón. Pero ... ¿qué es Scala.Serializable para ... No puede serializar una cadena de eventos. – jilen

Respuesta

8

Eso es porque hace java.lang.String no implementar scala.Serializable. No hay dependencias de Java a Scala.

Creo que encontrará que no necesita ningún molde, ya que java.lang.String implementa java.io.Serializable, pero quizás el contexto que omitió lo dejaría en claro.

9

Para añadir a lo que dijo Ricky Clarkson, esto funciona

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

pero esto no lo hace,

scala> "hi".asInstanceOf[scala.Serializable] 
java.lang.ClassCastException: java.lang.String cannot be cast to scala.Serializable 
... 

Sin calificación, Serializable en Scala se refiere a scala.Serializable. Tenga en cuenta que las cadenas en Scala son del tipo java.lang.String; son "nativos" de la JVM y no saben nada de Scala. De acuerdo con el API docs, el rasgo serializable de Scala existe para la compatibilidad multiplataforma (Java y .NET). Si solo está en la JVM, entonces java.io.Serializable debería ser suficiente.

Cuestiones relacionadas