Sto provando a creare una classe che implementa Queue
e Map
. Entrambe le interfacce definiscono il metodo remove(Object)
, ma con differenti tipi di ritorno:Implementazione di interfacce incompatibili
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
//...
}
La cancellazione del tipo di K sta causando questi due firme di metodo di collisione. Non posso averne uno perché è un override non valido e non posso averli entrambi perché hanno la stessa firma. C'è un modo per far coesistere queste due interfacce?
dal polsino, non mi sembra possibile. –
Come deciderà la tua classe quale usare, se hai chiamato remove (chiave)? –
[Non sembra buono] (http://stackoverflow.com/questions/573621/is-the-c-sharp-explicit-implementation-of-the-interface-present-in-java) –