💡 Java에서 리스트를 선언할 때 흔히
List<String> list = new ArrayList<>();
와 같은 방식을 많이 봅니다. 그렇다면 왜 이런 방식으로 선언할까요? 이번 블로그에서는 그 이유를 자세히 설명해보겠습니다.
인터페이스와 구현체에 대한 자세한 설명
👉 [Java] 인터페이스 & 구현체
List
는 인터페이스입니다.// 인터페이스로는 직접 객체를 생성할 수 없습니다. List<String> list = new List<>();
ArrayList
는 List
인터페이스의 구현체 중 하나입니다. 따라서 객체를 생성할 수 있습니다.List
는 인터페이스입니다.// 구현체인 ArrayList로는 객체를 생성할 수 있습니다. List<String> list = new ArrayList<>();
List
인터페이스로 변수를 선언하면 나중에 다른 리스트 구현체로 쉽게 바꿀 수 있습니다. 예를 들어, ArrayList
를 LinkedList
나 Vector
로 변경하는 것이 가능합니다.List
인터페이스를 사용하면 다양한 리스트 구현체를 한 번에 다룰 수 있습니다.// List 인터페이스를 사용한 변수 선언 List<String> list = new ArrayList<>(); // 나중에 필요에 따라 다른 구현체로 쉽게 변경 가능 list = new LinkedList<>(); list = new Vector<>();
List
인터페이스를 사용하면 List
인터페이스의 모든 메서드를 사용할 수 있습니다.List
인터페이스를 사용하는 경우, 다양한 리스트 구현체를 매개변수로 받을 수 있습니다.public void addElements(List<String> list) { list.add("element1"); list.add("element2"); } // 사용하는 측에서는 구현체에 상관없이 메서드를 호출할 수 있음 List<String> arrayList = new ArrayList<>(); addElements(arrayList); List<String> linkedList = new LinkedList<>(); addElements(linkedList); List<String> vectorList = new Vector<>(); addElements(vectorList);
List
인터페이스를 사용하면 라이브러리 사용자가 원하는 리스트 구현체를 선택하여 사용할 수 있습니다.List<String> list = new ArrayList<>();
로 선언하는 것은 코드의 유연성, 유지보수성, 다형성을 높이기 위한 좋은 방법입니다. 이는 특히 대규모 프로젝트나 협업 환경에서 매우 중요한 장점이 됩니다. 따라서, 인터페이스를 사용하여 변수를 선언하는 것이 권장됩니다.