使用String轻松引用Scala类?

时间:2012-06-08 01:23:04

标签: scala

我有一个相对简单的对象,它有一个发出HTTP请求的方法。请求会根据类类型自动提取数据并吐出必要的对象。

问题是我似乎无法动态引用该类。代码:

object abstractObject extends APIResource {

  def retrieve(clazz: String, key: String) = { 
    request("GET", instanceURL(key)).extract[clazz]
  }

}

clazz定义了一个要传递给extract的类型,它允许请求即时解析JSON哈希到对象中。我需要以某种方式使用该String来动态引用类类型并将其传递给extract

我需要重新设计这个想法吗?

1 个答案:

答案 0 :(得分:1)

类型仅在编译时存在,因此您无法从运行时值转换为类型。好吧,你可以使用Scala 2.10的反射,它本质上可以获得你需要在运行时生成的代码,然后执行。您需要将编译器和反射jar文件与应用程序捆绑在一起。

但是,你提议的内容不应该是必需的。 ClassManifest对象就足够了 - 当然,您使用的API可能并不提供此类替代方案。