Строка не может быть приведена к scala.Serializable - PullRequest
7 голосов
/ 16 августа 2011

Я использую scala.Serializable, но когда я вызываю String.asInstanceOf [Serializable], исключение приведения класса выбрасывается.Вот мой код, довольно простой.

arguments.map(_.asInstanceOf[Serializable])

Да, аргументы - это массив строк, конечно
Я запускаю приложение с scala-ide для затмения с eclipse 3.7 и scala 2.9.0-1

просмотр этой документации scala doc

Теперь проблема заключается в том, "каков типичный случай использования scala.Serializable"

Ответы [ 2 ]

10 голосов
/ 16 августа 2011

Чтобы добавить к тому, что сказал Рики Кларксон, это работает

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 означает scala.Serializable,Обратите внимание, что строки в Scala имеют тип java.lang.String;они "родные" для JVM и не знают о Scala.Согласно документации API , сериализуемая черта Scala существует для кроссплатформенной совместимости (Java и .NET).Если вы только на JVM, то java.io.Serializable должно быть достаточно.

9 голосов
/ 16 августа 2011

Это потому, что java.lang.String не реализует scala.Serializable. Нет никаких зависимостей от Java до Scala.

Я думаю, вы обнаружите, что вам не нужно никакого приведения, поскольку java.lang.String реализует java.io.Serializable, но, возможно, пропущенный вами контекст прояснит это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...