我有一个相对简单的对象,它有一个发出HTTP请求的方法。请求会根据类类型自动提取数据并吐出必要的对象。
问题是我似乎无法动态引用该类。代码:
object abstractObject extends APIResource {
def retrieve(clazz: String, key: String) = {
request("GET", instanceURL(key)).extract[clazz]
}
}
clazz
定义了一个要传递给extract
的类型,它允许请求即时解析JSON哈希到对象中。我需要以某种方式使用该String来动态引用类类型并将其传递给extract
。
我需要重新设计这个想法吗?
答案 0 :(得分:1)
类型仅在编译时存在,因此您无法从运行时值转换为类型。好吧,你可以使用Scala 2.10的反射,它本质上可以获得你需要在运行时生成的代码,然后执行。您需要将编译器和反射jar文件与应用程序捆绑在一起。
但是,你提议的内容不应该是必需的。 Class
或Manifest
对象就足够了 - 当然,您使用的API可能并不提供此类替代方案。