대부분의 개발자가 ArrayList
(본인 포함)을 사용하는 방식이며 다형성의 일반적인 교리입니다. 가능한 모든 기능을 사용할 수있는 클래스 계층 구조에서 최상위 클래스/인터페이스를 사용해야합니다.
일반적으로이 방법은 코드를보다 유연하게 만들고 List
으로 프로그래밍하는 것이 형식이 ArrayList
에만 있고 사용할 수없는 메서드를 사용하도록 제한하지 않으므로 프로그래밍을 쉽게 전환 할 수 있으므로, 예 : LinkedList
. 예를 들어
, 내가 한 경우 :
LinkedList<String> strings = new LinkedList<String>();
String s = strings.pop();
pop
는 LinkedList
에 단독으로, 그래서 난 그냥 ArrayList
에 직접 변경할 수 없습니다. 나는 또한 내 코드를 변경해야 할 것 :
ArrayList<String> strings = new ArrayList<String>();
String s = strings.remove(strings.size() - 1);
을하지만 난 그냥 인터페이스를 사용했다면, 나는 처음에 pop
을 사용한 적이 것, 그래서 난 그냥 어떤 구현 I에 strings
을 변경 한 수 원했어.
API를 프로그래밍 할 때 특히 중요합니다. 메서드에 공개적으로 액세스 할 수 있고 다른 개발자가 사용하는 경우 적절한 이유가없는 한 메서드의 종류를 제한하지 않도록해야합니다. 특히 인 경우에 포함될 수 있습니다. 좋은 이유가 이 아니고 을 사용하고자하는입니다.
반복 및 추가/삭제 이외의 작업을 수행하는 경우 Collection
까지 갈 수도 있습니다.List
은 중복을 포함 할 수 있으며 수동으로 주문했기 때문에 여기에서 컨텍스트를 잃기 시작합니다. 그러나 이것이 특별히 중요하지 않고 Collection
을 사용할 수있는 경우 목록을 Set
구현으로 바꿀 수도 있습니다.
[List와 ArrayList를 참조 유형으로 복제 할 수 있습니까?] (http://stackoverflow.com/questions/4062982/list-versus-arraylist-as-reference-type), [List vs. ArrayList 란 무엇입니까? ?] (http://stackoverflow.com/questions/6867484), [Java List vs ArrayList] (http://stackoverflow.com/questions/9309093), [List vs ArrayList] (http://stackoverflow.com/ 질문/7726361) 및 [Return ArrayList 또는 List?] (http://stackoverflow.com/questions/11683044) –
ArrayList를 다른 List로 바꾸려면 몇 칸을 올바르게 변경/확인해야합니까? 각 예? –