我想让以下代码不会抛出任何错误
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
有人知道解决方案吗?
答案 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