Perché non posso implementare un'interfaccia che abbia un tipo generico limitato in questo codice in java?

6

Ho le seguenti interfacce:

public interface Successorable<E> extends Comparable<E> 
    E suc();
}

e

interface IInterval <E extends Successorable<E>> {
    E min();
    E max();
}

Sto cercando di implementare IInterval facendo:

public class Interval<E> implements IInterval<E> {
 ....

Tuttavia eclipse lamenta che il tipo E non è un sostituto valido per il parametro limitato <E extends Successorable<E>> del tipo IInterval<E> .

Che cosa sto sbagliando?

Grazie!

    
posta dasen 22.03.2012 - 19:53
fonte

1 risposta

4

Credo che tu debba rideterminare le tue condizioni. Il semplice vecchio E in Interval<E> non soddisfa necessariamente E extends Successorable<E> quindi devi essere più specifico sul tuo parametro.

public class Interval<E extends Successorable<E>> implements IInterval<E> {
    @Override
    public E min() {
        throw new UnsupportedOperationException();
    }

    @Override
    public E max() {
        throw new UnsupportedOperationException();
    }
}
    
risposta data 22.03.2012 - 20:00
fonte

Leggi altre domande sui tag