我想使用Scala反射从地图构造一个案例类。如果输入映射中没有对应的键,如何用默认值填充参数列表?
def parser[T: TypeTag: ClassTag](args: Map[String, _]) = {
val rm = runtimeMirror(classTag[T].runtimeClass.getClassLoader)
val classSymbol = typeOf[T].typeSymbol.asClass
val classMirror = rm.reflectClass(classSymbol)
val constructor = typeOf[T].declaration(nme.CONSTRUCTOR).asMethod
val constructorMirror = classMirror.reflectConstructor(constructor)
val constructorArgs = constructor.paramss.flatten.map(param => {
val paramName = param.name.toString
if (param.typeSignature <:< typeOf[Option[Any]])
args.get(paramName)
else
args.getOrElse(paramName, "Default Value") //how to get default value here
})
constructorMirror(constructorArgs:_*).asInstanceOf[T]
}
在以上代码中,是否可以获取args.getOrElse(paramName, "Default Value")
中参数的默认值?