igx*_*igx 2 serialization scala
我有一个类名字符串表示
val cls = Class.forName("clsName")
def fromJson[T: Manifest](me: String): T = {
Extraction.extract[T](net.liftweb.json.parse(me))
}
Run Code Online (Sandbox Code Playgroud)
我想用它作为T:显示即
JsonConverter.fromJson[cls.type](stringData)
Run Code Online (Sandbox Code Playgroud)
这会返回一个错误
也尝试过
val t = Manifest.classType(cls)
JsonConverter.fromJson[t](stringData) // compile error
Run Code Online (Sandbox Code Playgroud)
什么是最好的方式?有没有办法避免使用反射?
你可以尝试这样的事情:
val cls = Class.forName(myClassName)
val m = Manifest.classType(cls)
val myObj:Any = JsonConverter.fromJson(stringData)(m)
Run Code Online (Sandbox Code Playgroud)
这种方法的一个细微差别是你必须明确地将对象键入为Any.这是因为您没有将该类作为编译时间,并且classType未向其提供类型参数的调用,因此Manifest返回的是Manifest[Nothing].不理想,但它的工作原理.