小编aza*_*kon的帖子

Kotlin 中的反射和泛型

我已经把自己写进了一个角落,我想要一个Class<Foo<Bar>>. 虽然没有明显的理由表明这不应该有效,但似乎没有办法创建一个。Foo<Bar>::class.java是一个语法错误,并且 Kotlin 没有提供 的公共构造函数Class

我正在编写的代码是 gson 上的抽象层。下面是一个过于简单的例子:

class Boxed<T : Any> (val value: T)

class BaseParser<U : Any> (
    private val clazz: Class<U>
) {
    //This works for 98% of cases
    open fun parse(s: String): U {
        return gson.fromJson(s, clazz)
    }
    
    //Presume that clazz is required for other omitted functions
}

//Typical subclass:
class FooParser : BaseParser<Foo>(Foo::class.java)

// Edge Case 
class BarParser : BaseParser<Boxed<Bar>>(Boxed<Bar>::class.java) {
    override fun parse(s: String): Boxed<Bar> {
        return Boxed(gson.fromJson(s, …
Run Code Online (Sandbox Code Playgroud)

gson kotlin

1
推荐指数
1
解决办法
643
查看次数

标签 统计

gson ×1

kotlin ×1