Ještě intuitivnější vysvětlení je s kolekcemi: List<? extends A> l; if (externifunkce()) { l = new ArrayList<B>(); } else { l = new ArrayList<C>(); l.add(new C()); } //a toto nesmi byt povoleno, protoze l muze byt List<C> ! l.add( new B() );
Kamil Podlešák