> - 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

Odpovedet emailem