Я хочу использовать отражение 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")
?