如何找到给定Type
的单个String参数的apply方法?
我有:
val param: String = ctx.request.uri.query.get(fName) //string param
val fType: scala.reflect.api.Type = field.typeSignature.resultType //desirable type
编辑:
事实上,我想制作Spray.io指令,从请求到案例类提取许多参数。这里有一个例子:
https://gist.github.com/mgosk/25b9f01abf98eae159d1
default
function)imbue
函数)来填充此案例类我想从gist改进这场大赛(line 109
)。在这一刻,我提供了基本的scala类型,但我想为具有apply(foo:String)
函数的用户定义类型添加处理。
答案 0 :(得分:0)
我找到了答案:
val param: String = ctx.request.uri.query.get(fName) //string param
val fType: scala.reflect.api.Type = field.typeSignature.resultType //desirable type
val classMirror = currentMirror.reflectClass(fType.typeSymbol.asClass)
val ctor = fType.decl(termNames.CONSTRUCTOR).asMethod
val value = classMirror.reflectConstructor(ctor).apply(param)
PS。它仅适用于具有相应构造函数的类