Pokud jde o generické wildcards, tak tam se člověk hodně rychle dostane do situací, kdy se mu dělají uzly na mozku.

Jen tak pro zajímavost:
- do List<? extends Number> nemůžu nic vložit, maximálně null
- z List<? super Number> nemůžu odebírat, respektive mám zaručeno pouze to, že tyto objekty budou implementovat lava.lang.Object
Naštěstí existuje docela použitelná mnemotechnická pomůcka od Joshe Blocha:
PECS - Producer Extends, Consumer SuperNicméně už jenom přijít na to, co je ten producent a konzument, je občas problém. Pak to vede na úchvatné signatury metod typu:
public static <T extends Comparable<? super T>> void sort(List<T> list)