代码之家  ›  专栏  ›  技术社区  ›  waldemar

Kotlin中带有extends[duplicate]的泛型

  •  1
  • waldemar  · 技术社区  · 7 年前

    我试图将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*
    

    1 回复  |  直到 7 年前
        1
  •  8
  •   Community CDub    4 年前

    我想这在科特林是不允许的。

    Kotlin spec

    T S和S T,形成一个循环:

    interface B<T : C<*>>

    interface C<S : B<*>>

    在完全展开的形式下,这个界限将是无限的。目的 这条规则的目的是避免此类无限类型和类型检查 与之相关的困难。