我试图将java项目移植到kotlin并且遇到一些问题。我在java中使用泛型
有一些MVP结构interface View<P extends Presenter> {}
interface Presenter<V extends View> {}
interface BaseView<P extends Presenter> extends View<P> {}
class BaseActivity<P extends Presenter> extends AppCompatActivity implements BaseView<P> {}
最初有两个类,我有来自IDE的错误
interface Presenter<V : View<*>> {}
interface View<P : Presenter<*>> {}
我的错误是
*this type parameter violates the finite bound restriction*
Java代码没有任何问题
答案 0 :(得分:6)
我想Kotlin不允许这样做。
来自Kotlin spec:
以下一对声明无效,因为有边 T→S和S→T,形成一个循环:
interface B<T : C<*>>
interface C<S : B<*>>
原因如下:
在完全展开的形式中,这个界限将是无限的。目的 此规则的目的是避免这种无限类型和类型检查 与他们相关的困难。
在您的情况下,它是V - &gt; P和P - &gt; V形成一个循环。