【问题标题】:Scala Object - get reference from string (in Scala 2.10)Scala Object - 从字符串中获取引用(在 Scala 2.10 中)
【发布时间】:2014-06-21 10:03:16
【问题描述】:

我希望能够从配置中指定的字符串中获取 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]

但我希望在 Scala 2.10 中使用更新的反射 API 有一种更简洁的方法来执行此操作。

【问题讨论】:

标签: scala reflection scala-2.10


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2023-03-13
    • 2012-07-25
    相关资源
    最近更新 更多