2015-01-02 78 views
-1

申請我怎樣才能找到一個字符串參數適用方法給出Type反思 - 使用帶有字符串PARAM

我:

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功能)
  • 在第二個步驟創造例類的實例我想灌輸提取參數這種情況下類從HTTP請求(imbue功能)

我想提高從要點這個大比賽(line 109)。在這一刻,我擔任斯卡拉基本類型,但是我想補充處理對具有apply(foo:String)功能的用戶定義類型。

+0

嘗試詳細闡述您的問題,理想情況下,提供可編譯的代碼 –

+0

您不需要反思 - 整個噴霧點就是一切都是類型安全的,並且構建於不成形。所以,你可以'hmap'一個指令,並使用[不成形通用(https://github.com/milessabin/shapeless/wiki/Feature-overview:-shapeless-2.0.0#generic-representation-of-sealed-families-的情況下的類)(這是不成形2文檔,如果你使用噴霧路由shapeless2;如果您使用的是無形的1.x的構建則使用'Iso'),以HList's之間'你映射案例類,不需要反思。 – lmm

回答

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。它只適用於具有相應構造函數的類