我已经把自己写进了一个角落,我想要一个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)