Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala对象-从字符串获取引用(在Scala 2.10中)_Scala_Reflection_Scala 2.10 - Fatal编程技术网

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

Scala对象-从字符串获取引用(在Scala 2.10中),scala,reflection,scala-2.10,Scala,Reflection,Scala 2.10,我希望能够从配置中指定的字符串中获取Scala对象的实例。例如,假设我有一个config属性db.driver=“scala.slick.driver.H2Driver” 我希望能够获取此对象的实例H2Driver。显然,我可以创建一个配置到实际对象的映射,但这似乎是一个麻烦。我还可以通过在配置的末尾添加$并加载模块来实现这一点,即 val cl = Class.forName("scala.slick.driver.H2Driver$") //note the $ val driv

我希望能够从配置中指定的字符串中获取Scala对象的实例。例如,假设我有一个config属性
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]
但我希望在Scala2.10中使用更新的反射API有一种更简洁的方法来实现这一点

与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

对不起,我删除了我的答案。我意识到你在2.10而不是2.11中寻找解决方案,你看到了吗