2017-08-22 1 views
1

私はjavaプロジェクトをkotlinに移植しようとしていて、いくつか問題があります。私はIDEからエラーを持っている最初の二つのクラスでは、ジェネリック医薬品Kotlinのジェネリックスwith

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> {} 

を使用してJavaでいくつかのMVP構造を持っている

interface Presenter<V : View<*>> {} 
interface View<P : Presenter<*>> {} 

私のエラーは、Javaコードで

*this type parameter violates the finite bound restriction* 

ありません何の問題もあり

答えて

6

これはKotlinでは許可されていないと思います。 Kotlin specから

サイクルを形成する縁 T→SとS→Tが存在するので、宣言の次のペアは、無効である:

interface B<T : C<*>>

interface C<S : B<*>>

理由は次のとおりです。

この完全に拡張された形式では、この結合は無限になります。この規則の目的 は、このような無限の型を避け、それらに関連する問題の型チェック を調べることです。

あなたの場合、V - > Pであり、P - > Vはサイクルを形成します。

関連する問題