Toto je důsledek toho, že String[] je potomkem Object[]. Kdyby to tak
nebylo, nemohli bychom z metody vracející Object[] vrátit nic jiného než
právě toto pole a do metody s parametrem typu Object[] bychom mohli předat
pouze toto pole. A to by bylo dost omezující.
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Ladislav Thon napsal(a):
>>
>> Ono je to poměrně logické, stačí se zamyslet nad touto situací:
>> Round r = new BagRound();
>> r.doTransition(Gender.MALE);
>> Z hlediska kompilátoru by bylo vše v pořádku, protože metoda
>> Round.doTransition bere jako parametr opravdu libovolný enum.
>
>
> Rád bych v téhle souvislosti upozornil, že typový systém Javy obsahuje
> podobnou díru od své první verze -- pole :-)
>
> String[] a = { "a", "b", "c" };
> Object[] b = a;
> b[0] = new Object();
>
> Druhý řádek by v rozumném jazyce neprošel překladačem, ale tady dostanete
> na
> třetím řádku výjimku za běhu.
>
> LT
>