2013-02-20 22 views
5

Czy jest jakaś różnica między dwiema liniami w następującychPrzypisywanie ArrayList do listy

ArrayList<String> arrName = new ArrayList<String>(); 
List<String>  arrName = new ArrayList<String>(); 

Dzięki za odpowiedź

+0

Widziałem to samo pytanie (nawet ten sam tekst) od wczoraj do dzisiaj (ale nie mogę go znaleźć). –

+0

Och i C Dzięki i tak –

+0

@ LuiggiMendoza. Nawet ja. –

Odpowiedz

3

Prawie zawsze drugi preferowany jest od pierwszego. Druga ma tę zaletę, że implementacja List może się zmienić (na przykład na LinkedList), bez wpływu na resztę kodu. To będzie trudne do zrobienia z ArrayList, nie tylko dlatego, że będziesz musiał zmienić ArrayList na LinkedList wszędzie, ale także dlatego, że mogłeś użyć konkretnych metod.

2

Drugie podejście jest zazwyczaj preferowana, ponieważ ukrywa się za implementację interfejsu.

Oznacza to, że w dalszej kolejności, jeśli wymagania ulegną zmianie i będą wymagać kolejnej implementacji interfejsu List, możesz zmienić tylko jedną linię kodu, a wszystko inne będzie nadal działać, ponieważ kodujesz do interfejsu, a nie do klasy .

2

Nie ma dużej różnicy per se, ale List stosuje się o ile to możliwe, ponieważ jest to interfejs i można zobaczyć w metodach parametrów standardowych bibliotek są ogólnie List<K>, tak że jakiekolwiek konkretne wdrożenie mogą być przekazywane, jak ArrayList lub LinkedList.

2

Spróbuj ukryć określoną implementację za interfejsem, gdy tylko jest to możliwe. see this

Powiązane problemy