Reflection 带参数的newInstance
有没有办法“动态地”/reflective/etc在Scala中创建一个带有参数的类的新实例 例如,类似于:Reflection 带参数的newInstance,reflection,scala,Reflection,Scala,有没有办法“动态地”/reflective/etc在Scala中创建一个带有参数的类的新实例 例如,类似于: class C(x: String) manifest[C].erasure.newInstance("string") 但这就是问题所在。(请放心,这也是在比这个简化示例更有意义的上下文中使用的!)erasure属于java.lang.Class,因此您可以使用构造函数(无论如何,在这个简单的例子中您不需要清单-您可以使用classOf[C])。与直接调用newinstance不同,
class C(x: String)
manifest[C].erasure.newInstance("string")
但这就是问题所在。(请放心,这也是在比这个简化示例更有意义的上下文中使用的!)
erasure
属于java.lang.Class
,因此您可以使用构造函数(无论如何,在这个简单的例子中您不需要清单-您可以使用classOf[C]
)。与直接调用newinstance
不同,您可以首先使用getConstructor
方法(使用相应的参数类型)找到相应的构造函数,然后只需对其调用newinstance
:
classOf[C].getConstructor(classOf[String]).newInstance("string")