kotlin Jackson将来自Redis的字符串列表作为泛型类型进行去字符化

oknwwptz  于 2023-04-21  发布在  Kotlin
关注(0)|答案(1)|浏览(117)

我有一段Kotlin代码,看起来像这样:

val objs = results.map {
            if(it == null) return@map null
            val typeRef: TypeReference<T> = object : TypeReference<T>() {}
            jacksonObjectMapper().readValue(it, typeRef)
        }

我希望我的方法返回一个List〈T?〉,其中T是代码签名中的泛型类型。
虽然它“有点”工作,但它并不是我特别想要的。例如,当我像这样调用我的方法时:

myMethod<MyDTO>get(keys: List<String>) // ---> I want to get a list of MyDTO

这些方法返回LinkedHashMap的列表而不是MyDTO的列表。
我做错了什么?

i7uq4tfw

i7uq4tfw1#

我刚刚找到了一个方法。
我可以给我的方法传递一个额外的参数:

ofClass: Class<T>

所以我的方法现在看起来像这样:

val objs = results.map {
            if(it == null) return@map null
            jacksonObjectMapper().readValue(it, ofClass)
        }

并携带类型信息。
很有魅力。

相关问题