Scala对象 - 从字符串中获取引用(在Scala 2.10中)

时间:2014-05-05 07:09:11

标签: scala reflection scala-2.10

我希望能够从config中指定的String中获取Scala对象的实例。比方说,我有一个配置属性db.driver = "scala.slick.driver.H2Driver"

我希望能够获得此对象H2Driver的实例。显然,我可以为实际物体创建一个配置图,但这似乎很麻烦。我也可以通过在配置的末尾包含一个$并加载模块来实现这一点,即

   val cl = Class.forName("scala.slick.driver.H2Driver$") //note the $
   val driverObj = cl.getField("MODULE$").get(null).asInstanceOf[JdbcProfile]

但是我希望使用更新的反射API在Scala 2.10中有更简洁的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

同样在2.10:

Welcome to Scala version 2.11.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import reflect.runtime._
import reflect.runtime._

scala> currentMirror staticModule "scala.Array"
res0: reflect.runtime.universe.ModuleSymbol = object Array

scala> currentMirror reflectModule res0
res1: reflect.runtime.universe.ModuleMirror = module mirror for scala.Array (bound to null)

scala> .instance
res2: Any = scala.Array$@67b467e9