Io uso due interfacce:Generico Chaos Java
public interface Receiver<T> {
public void receive(T obj);
public Set<Class<? extends T>> getInterests();
}
public interface Distributor<T> extends Receiver<T> {
public void register(Receiver<T> receiver);
}
Il mio problema che voglio registrare un distributore in un distributore per esempio Distributor<Object>
registro == ==>Distributor<String>
Il mio primo pensiero è stato quello di cambiare il metodo di registro per register(Receiver<? extends T> receiver).
Ma se voglio ottenere le classi il ricevitore è intrested nei getInterests metodo potrebbe restituire qualcosa come Set<Class<? extends ? extends T>>
. Indiretto Ottengo qualcosa come Set<Class<? extends T>>
ma ho sperimentato che i caratteri jolly di transito non sono possibili in Java.
Qualcuno ha un'idea?
EDIT: Per fare un esempio:
public void register(Receiver<? extends T> receiver){
Set<Class<? extends T>> interests = receiver.getInterests();
//Problem because receiver.getInterests is
//Set<Class<? extends ? extends T>>
...
}
Può fare un esempio di una riga di codice, che non può essere compilato per voi? Sembra che il codice verrà compilato. –