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 つのインターフェイスを共存させる方法はありますか?