字符串 - >案例对象使用反射?

时间:2015-02-28 21:18:08

标签: scala

鉴于以下内容:

package com

object Foo {
    trait Parent
    case object Boy extends Parent
}

如何制作类型的方法:String -> Option[Foo.Parent]

我尝试了以下尝试失败:

scala> import com._
import com._

scala> Class.forName("com.Foo$")
res0: Class[_] = class com.Foo$

scala> Class.forName("com.Foo.Boy$")
java.lang.ClassNotFoundException: com.Foo.Boy$

我引用了这个answer,因为它指出了我正确的方向。

1 个答案:

答案 0 :(得分:3)

我相信你想要:

val classVal=Class.forName("com.Foo$Boy")

要实例化:

val constructer=classVal.getDeclaredConstructor()
constructer.setAccessible(true)
val instance constructer.newInstance()