Scala从字符串表示中获取类类型

时间:2013-05-06 15:51:10

标签: scala serialization

我有一个类名字符串表示

val cls = Class.forName("clsName")
def fromJson[T: Manifest](me: String): T = {
Extraction.extract[T](net.liftweb.json.parse(me))
}

我想用它作为T:表示即

JsonConverter.fromJson[cls.type](stringData)

这会返回错误

也尝试了

val t = Manifest.classType(cls)
JsonConverter.fromJson[t](stringData) // compile error 

最好的方法是什么?有没有办法避免使用反射?

1 个答案:

答案 0 :(得分:6)

您可以尝试这样的事情:

val cls = Class.forName(myClassName)
val m = Manifest.classType(cls)
val myObj:Any = JsonConverter.fromJson(stringData)(m) 

这种方法的一个细微差别是你必须明确地将对象键入为Any。这是因为您没有将该类作为编译时间,并且未向classType调用其类型参数,因此返回的ManifestManifest[Nothing]。不理想,但它有效。