我可以通过静态反射得到case类的默认构造函数:
val symbol = currentMirror.classSymbol(myObj.getClass).typeSignature.typeSymbol.asClass
val ctor = symbol.primaryConstructor
从这里我可以做一些漂亮的事情,比如它的字段的内省细节等等。但是我现在如何调用构造函数方法呢?我可以深入研究myObj的类,但如果它有多个构造函数,是否有一种直接的方法可以将正确的构造函数与我从primaryConstructor获得的构造函数进行匹配?
答案 0 :(得分:3)
您可以在类镜像上使用reflectConstructor
方法:
val classMirror = currentMirror.reflectClass(typeOf[Foo].typeSymbol.asClass)
classMirror.reflectConstructor(ctor.asMethod).apply(2, "bar").asInstanceOf[Foo]