Avatar
Benjibs
Člen
Avatar
Benjibs:

Akú výhodu má toto:

List marks = ArrayList();

oproti

ArrayList marks = ArrayList();

Dostal som sa k tomu, vraj keď využijem prvú možnosť, môžem v prípade zmeny zámeru ľahko použiť LL namiesto AL a naopak.

Je pravda, že použitie prvej možnosti nedovoľuje využitie špeicifický metód AL, resp. LL? Všeobecne, kedy je lepšie využiť prvú a kedy druhú možnosť?

Odpovědět 24.6.2013 14:15
1 + 1 = 2
Avatar
Odpovídá na Benjibs
Luboš Běhounek (Satik):

List je v Javě pouze interface, takze do marks pak muzes nacpat jakoukoliv tridu, ktera toto rozhrani implementuje.

Prvni verze te necha pouzit jen funkce, ktere obsahuje rozhrani List, kdyby jsi pak chtel pouzit nejake funkce ArrayListu, tak musis promennou marks pretypovavat, zatimco v druhem pripade se rovnou dostanes na vsechny funkce ArrayListu.

Nahoru Odpovědět  +1 24.6.2013 14:29
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Které že jsou ty specifické metody v ArrayList proti List?

Nahoru Odpovědět 24.6.2013 15:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

Všeobecně je lepší použít první možnost, pokud to jde. Tedy vlevo použít identifikátor rozhraní.

Nahoru Odpovědět  +1 24.6.2013 16:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

"Které že jsou ty specifické metody v ArrayList proti List?"

Myslim, ze tohle neni dulezite, zrovna tenhle pripad asi moc rozidlu mit nebude, psal jsem to obecne.

Konkretne tady treba list nema

ensureCapacity(...)
Nahoru Odpovědět 24.6.2013 16:28
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

To souhlasí, LinkedList ho také nemá. Je to specifikum pro ArrayList, běžně se nepoužívá.

Obecně se má používat co nejobecnější třída nebo rozhraní, které ještě vyhovuje našim požadavkům. Občas používám přímo třídu Object, zejména pokud z objektu potřebuji pouze metodu toString() a nic víc.

Nahoru Odpovědět 24.6.2013 16:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.