본문 바로가기
Computer/Java

ArrayList를 List로 선언하는 이유

by hexists 2015. 5. 12.

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


이렇게 선언해야 한다.


왜?


List는 인터페이스

ArrayList는 List의 구현체로 볼 수 있다.


그렇다면, 좀 더 큰 개념으로 선언해서 사용하는것인데...


그 이유는 

다형성(polymorphism)의 개념으로 이해할 수 있다.

List 인터페이스는 여러가지 구현체로 변경될 수 있는 형태이고,

ArrayList는 List 인터페이스의 구현체 중 하나이다.


이 때, List로 선언해서 사용하면 차후에 다른 구현체로 변경하고자 할 때, 

실제로 구현체를 이용하는 세부 코드(?)만 변경해 줄 수 있다.


(반대로, ArrayList = new ArrayList()로 선언했다면 ArrayList로 선언한 모든 부분을 찾아 변경해줘야 한다.)


이런 부분이 다형성의 특징이며,

List = new ArrayList()처럼 객체의 선언을 인터페이스로 하는 것도 그 특징을 이용한 한 사례이다.



참고:

1) http://stackoverflow.com/questions/9852831/polymorphism-why-use-list-list-new-arraylist-instead-of-arraylist-list-n

2) http://stackoverflow.com/questions/18329311/reason-for-list-list-new-arraylist

3) 위키북스 : http://wikibook.co.kr/article/java-coding-with-pmd-loosecoupling/

1) okky : http://okky.kr/article/149819

2) spWony blog: http://xxwony.egloos.com/tb/33456


java api List : https://docs.oracle.com/javase/7/docs/api/index.html?java/util/List.html

java api ArrayList : https://docs.oracle.com/javase/7/docs/api/index.html?java/util/List.html