newInstance with arguments

时间:2011-03-20 01:03:01

标签: reflection scala

有没有办法'动态'/反射/等在Scala中创建带有参数的类的新实例?

例如:

class C(x: String)
manifest[C].erasure.newInstance("string")

但那可以编译。 (这也是,放心,在比这个简化的例子更有意义的上下文中使用!)

1 个答案:

答案 0 :(得分:12)

erasure的类型为java.lang.Class,因此您可以使用构造函数(无论如何,在这个简单的情况下您不需要显示 - 您只需使用classOf[C])。您可以先使用newinstance方法(使用对应的参数类型)找到对应的构造函数,然后只需在其上调用getConstructor,而不是直接调用newInstance

classOf[C].getConstructor(classOf[String]).newInstance("string")