Próbuję zbudować klasę, która implementuje Queue
i Map
. Oba złącza określają sposób remove(Object)
, ale z różnych typów returnImplementowanie niekompatybilnych interfejsów
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
//...
}
typu usuwanie K powoduje, te dwa podpisy Sposób zderzają. Nie mogę mieć jednego z nich, ponieważ jest to niepoprawne zastąpienie i nie mogę mieć obu, ponieważ mają one ten sam podpis. Czy jest jakiś sposób, żebym mógł współistnieć z tymi dwoma interfejsami?
z mankietu, nie wydaje mi się to możliwe. –
W jaki sposób twoja klasa zdecyduje, której użyć, jeśli wywołasz remove (key)? –
[Nie wygląda dobrze] (http://stackoverflow.com/questions/573621/is-the-c-sharp-exicit-implementation-of-interface-present-in-java) –