访问外部类型的类型参数

在Kotlin中,我们可以定义嵌套的接口。 如果外部接口是通用的(这里只是为了模拟一个适当的Self元类型,但可以想象其他用途),我可以从内部类型引用它的类型参数吗?

也就是说,我想达到(相当于)这个:

 interface JsonRepresentable<Self: JsonRepresentable<Self>> { fun toJson(): String interface Companion { operator fun invoke(json:String): Self? } } 

不,你不能。 一个接口不能是一个非静态的内部类,这是一个Kotlin无法克服的平台约束。 我知道限制伴随对象应该是非常有用的,但是这还没有被考虑。 我不知道JetBrains是否会严肃对待这个建议。

在你的尝试中,除了可以在JsonRepresentable::class.nestedClasses找到KClass<Compaion>之外,这两个接口是完全不相关的。 这些接口之间的关系可以与Java静态内部类和它的声明类之间的关系进行比较。

    Interesting Posts