我正在嘗試構建一個實現Queue
和Map
的類。這兩個接口定義remove(Object)
的方法,但不同的返回類型:K的實現不兼容的接口
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
//...
}
類型擦除造成這兩個方法簽名碰撞。我不能擁有其中的一個,因爲它是一個無效的覆蓋,而我不能擁有這兩個,因爲它們具有相同的簽名。有什麼辦法可以讓這兩個界面共存嗎?
關閉袖口,它似乎不可能對我。 –
如果你叫remove(key),你的班級將如何決定使用哪一個? –
[看起來不好](http://stackoverflow.com/questions/573621/is-the-c-sharp-explicit-implementation-of-the-interface-present-in-java) –