Rozważmy dwa przypadki:
1) List<?> myList = new ArrayList<?>();
(2) ArrayList<?> myList = new ArrayList<?>();
Rozumiem, że dzięki (1) implementacje interfejsu List można zamieniać. Wygląda na to, że (1) jest zwykle używany w aplikacji bez względu na potrzebę (ja zawsze tego używam). Zastanawiam się, czy ktoś używa (2)? Ponadto, jak często (i czy mogę uzyskać przykład) sytuacja faktycznie wymaga użycia (1) powyżej (2)?
1 odpowiedź
Prawie zawsze pierwszy przypadek jest preferowany nad drugim przypadkiem. Pierwszy ma tę zaletę, że implementacja Listy może się zmienić (na przykład na LinkedList
), bez wpływu na resztę kodu. Będzie to trudne zadanie do wykonania z ArrayList
, nie tylko dlatego, że będziesz musiał wszędzie zmienić ArrayList
na LinkedList
, ale także dlatego, że mogłeś użyć metod specyficznych dla ArrayList
.
polecam zapoznać się z tutorialem odnośnie implementacji list: http://java.sun.com/docs/books/tutorial/collections/implementations/list.html