Scala将对象转换为另一种类型

时间:2016-11-05 13:34:21

标签: scala casting

我想让以下代码不会抛出任何错误

case class A(value: String)
val a = A("I hope to be string one day") 
val value = a.asInstanceOf[String] // java.lang.ClassCastException: A cannot be cast to java.lang.String

我想修改A类以下工作

val value = a.asInstanceOf[String] // I hope to be string one day

有人知道解决方案吗?

2 个答案:

答案 0 :(得分:6)

A无法转换为String,因为不是字符串。您无法使a.asInstanceOf[String]工作。

也就是说,您可以明确地或隐含地从<{1}}转换A

String

答案 1 :(得分:0)

正如我所提到的,如果您的用例是为现有类添加其他功能,例如string,您可以定义implict class

implicit class Foo(val s: String) {
    def inc = s.map(c => (c + 1).toChar)
}

然后如果您可以将此类放入范围,则可以执行以下操作

"foobarstring".inc //strings now have a function called inc

有关此主题的更多详情http://docs.scala-lang.org/overviews/core/implicit-classes.html