scala 反射实例化 class 与多个 paramLists
scala reflection instantiate class with multiple paramLists
假设我们有 class 个
class A(val x: Any)(val y: Any)
然后我们想反射性地实例化它,使其具有 x 和 y 值:
def instantiate[T](aClass: Class[T], args: List[Any]): T = {
val mirror = ru.runtimeMirror(aClass.getClassLoader)
val classMirror = mirror.reflectClass(mirror.classSymbol(aClass))
val constructorMirror = classMirror.reflectConstructor(getPrimaryConstructor(aClass))
constructorMirror.apply(args: _*).asInstanceOf[T]
}
此方法适用于具有一个 paramList 的 classes,以及如何在主构造函数中使用 ()() 实例化 class?我想我的实例化方法会有签名:
instantiate[T](aClass: Class[T], args: List[List[Any]]): T = ???
谢谢
已解决!这很简单。想象一下,只有一个参数列表,参数总和 class A(x, y) 而不是 A(x)(y)
假设我们有 class 个
class A(val x: Any)(val y: Any)
然后我们想反射性地实例化它,使其具有 x 和 y 值:
def instantiate[T](aClass: Class[T], args: List[Any]): T = {
val mirror = ru.runtimeMirror(aClass.getClassLoader)
val classMirror = mirror.reflectClass(mirror.classSymbol(aClass))
val constructorMirror = classMirror.reflectConstructor(getPrimaryConstructor(aClass))
constructorMirror.apply(args: _*).asInstanceOf[T]
}
此方法适用于具有一个 paramList 的 classes,以及如何在主构造函数中使用 ()() 实例化 class?我想我的实例化方法会有签名:
instantiate[T](aClass: Class[T], args: List[List[Any]]): T = ???
谢谢
已解决!这很简单。想象一下,只有一个参数列表,参数总和 class A(x, y) 而不是 A(x)(y)