7

Queueとを実装するクラスを構築しようとしていMapます。どちらのインターフェイスもremove(Object)メソッドを定義しますが、戻り値の型が異なります。

public interface Collection<E> { //Queue extends Collection, which has the problem method

    public boolean remove(Object e);

    //...
}

public interface Map<K,V> {

    public V remove(K key);

    //...
}

public class QueuedMap<K,V> extends AbstractMap implements Queue {

    public V remove(K key) {/* ... */}
    //ERROR: V is not compatible with boolean

    //...
}

K の型消去により、これら 2 つのメソッド シグネチャが衝突します。無効なオーバーライドであるため、どちらか一方を使用することはできません。また、署名が同じであるため、両方を使用することもできません。これら 2 つのインターフェイスを共存させる方法はありますか?

4

2 に答える 2