定義的實例我想爲kotlin 1.0.3的web框架編寫一個很好的Kotlin包裝。在這我試圖混入一個函數的請求,讓它通過使用傑克遜的JSON轉換返回一個bean。在kotlin中,如何返回通過泛型類參數
所以在我的圖書館我有以下
private val mapper: ObjectMapper = ObjectMapper().registerModule(KotlinModule())
fun <T : Any> Request.asDataBean(type: KClass<T>): T = mapper.readValue(this.body(), type.java)
但是當我轉到使用代碼這樣
post("/hello", { req, res ->
val bean = req.asDataBean(TestBean::class)
})
它錯誤說Bean的預期值是任何。我想要的是我的API像上面那樣工作,無論傳遞給asDataBean方法的通用「類」定義是返回的值的類型。
我也試過
fun <T> Request.asDataBean(type: KClass<*>): T = mapper.readValue(this.body(), type.java) as T
以及在使其工作,但使用的代碼時,他們也給出確切的同樣的錯誤,希望改變使用代碼
val bean: TestBean = req.asDataBean(TestBean::class)
。
我該如何獲得它使用傳入的類類型定義的泛型作爲參數(非常類似於所有spring api在java中的工作方式)?
奇怪的是,第一個片段爲我工作好吧。你能否提供一個沒有外部依賴關係的最小自包含示例? – voddan
我不知道我明白。我創建了一個github倉庫,在https://github.com/sepatel/kotlin-seed上顯示代碼。這是整個項目,希望能幫助更好地描述這個問題?它給出的錯誤是使用API時出現編譯錯誤,說「e:Main.kt:(23,9):期望Any類型的值 e:Main.kt:(23,34):類型推斷失敗:沒有足夠的信息來推斷參數T在樂趣 Request.asData(類型:KClass <*>):T「 –
Ryba