iki arabirimleri kullanın:Jenerik Kaos 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);
}
Ben mesela bir Distribütör bir Dağıtıcı kaydetmek istediğiniz Sorunum Distributor<Object>
== kayıt ==>Distributor<String>
ilk düşüncem register(Receiver<? extends T> receiver).
için kayıt yöntemini değiştirmek oldu Ama Sınıfları almak istiyorsanız alıcı Set<Class<? extends ? extends T>>
gibi bir şey dönecekti Yöntem getInterests intrested olduğunu. Dolaylı ben Set<Class<? extends T>>
gibi bir şey olsun ama transitiv joker Java mümkün olmadığını yaşadı.
DÜZENLEME: Örnek olarak:
public void register(Receiver<? extends T> receiver){
Set<Class<? extends T>> interests = receiver.getInterests();
//Problem because receiver.getInterests is
//Set<Class<? extends ? extends T>>
...
}
sizin için derleme değil bir kod satırının bir örnek verebilir ... joker
kullanılması gerektiğini ama ben çok fazla kahrolası joker var biliyor? Kod derlenecek gibi görünüyor. –