newInstance with arguments

Aar*_*ken 3 reflection scala

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

例如,类似于:

class C(x: String)
manifest[C].erasure.newInstance("string")
Run Code Online (Sandbox Code Playgroud)

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

ten*_*shi 13

erasure是类型java.lang.Class,所以你可以使用构造函数(无论如何你不需要在这个简单的情况下显示 - 你可以使用classOf[C]).而不是调用newinstance直接,你可以先找到对应的构造函数getConstructor法(用记者参数类型),然后只需调用newInstance就可以了:

classOf[C].getConstructor(classOf[String]).newInstance("string")
Run Code Online (Sandbox Code Playgroud)