You can add a helper method that uses a type variable instead of a template
public void register(Receiver<? extends T> receiver) { register2(receiver); } private <S extends T> void register2(Receiver<S> receiver) { Set<Class<? extends S>> interests = receiver.getInterests(); ... }
Method, on the other hand
public Set<Class<? extends T>> getInterests();
probably intended to return a covariant Set or read-only. Ideally, use a wildcard
public Set<? extends Class<? extends T>> getInterests();
but I know there are too many damn permutations ...
ZhongYu
source share