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

Won*_*ark 1 casting scala

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

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
Run Code Online (Sandbox Code Playgroud)

我想修改A类以下工作

val value = a.asInstanceOf[String] // I hope to be string one day
Run Code Online (Sandbox Code Playgroud)

有人知道解决方案吗?

Dyl*_*lan 6

A不能转换为a,String因为它不是String.你无法做任何a.asInstanceOf[String]工作.

这就是说,你可以转换来自AString,或隐或显:

// explicit
val s: String = a.value

// implicit conversion (although typically frowned-upon as bad practice)
implicit def unwrapA(a: A): String = a.value
val s: String = a
Run Code Online (Sandbox Code Playgroud)