> - V Javě je Iterable<String> potomkem Iterable<Object> protože je to v reálu ten samej objekt - pouze překladač nás může chránit tak jako máte ve 2 příkladě.. (to samé pro List)
IMHO nejlepší je dívat se na parametrizované třídy jako na funkce, které vytváří "normální" třídy, a vykašlat se na implementační detaily (i když ty detaily v Javě jsou někdy bohužel pekelně důležité). A i když sestoupíte na tu implementační úroveň, stejně není podstatné, jestli je Iterable<String> potomkem Iterable<Object> (což technicky je, pokud definujeme relaci dědičnosti jako reflexivní), ale to, jestli Iterable<String> je nebo není _podtypem_ Iterable<Object>. A to rozhodně není. LT
