我正在使用 Scala 2.10,并且正在努力使用以下通用方法来反序列化 java 枚举。
class FromEnumFormat[T<: Enum[T]] extends JsonFormat[T] {
import scala.reflect._
implicit val m = classTag[T]
override def read(json: JsValue): T = {
val EnumerationClass = m.runtimeClass.asInstanceOf[Class[T]]
json match {
case s :JsString if EnumerationClass.getEnumConstants.map(_.toString.toLowerCase).contains(s) => Enum.valueOf(EnumerationClass ,s.value.toUpperCase()).asInstanceOf[T]
case unknown => deserializationError(s"unknown Status: ${unknown}")
}
}
override def write(obj: T): JsValue = {JsString(obj.name().toLowerCase)}
}
我收到的错误消息是:
No ClassTag available for T
这很明显,但我不知道如何正确解决它。有人可以给我一个提示吗?