2016-04-12 14 views
1

私はKotlinにjava.util.AbstractList<Int>を拡張MyIntListを実装しようとしています。 AbstractList<E>E remove(int index)boolean remove(Object o)の両方を定義します。私は、次のコードを使用します。Kotlin派生クラスでオーバーライドするJavaオーバーロードを選択するにはどうすればよいですか?

class IntList() : AbstractList<Int>() { 
    .... 
    override fun remove(index: Int): Int { 
     .... 
    } 
} 

をしかし、これは私がE remove(int index)を上書きしようとしていることをKotlinに伝えるにはどうすればよいerror: return type of 'remove' is not a subtype of the return type of the overridden member 'public open fun remove(element: kotlin.Int!): kotlin.Boolean defined in java.util.AbstractList' override fun remove(index: Int): Int {

を与えますか? (そして、それはどこからそのremove(Int):Boolean過負荷を取得していますか?)

答えて

1

は非常に最後の文が手掛かりだったことが判明します。私がMutableList<Int>を実装していると思っているところで、いくつかのコンパイラの不名誉なことが起こっています。そしてMutableList<E>は静かに名前を変更、remove方法にコンパイルremoveAt(element: E): Booleanを定義します。私はremoveAtをオーバーライドするとすべてが動作します。

関連する問題