인프런 커뮤니티 질문&답변

유쾌한 고양이님의 프로필 이미지
유쾌한 고양이

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 도메인과 리포지토리 만들기

list와 arraylist

작성

·

266

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
public List<Member> findAll() {

return new ArrayList<Member>(store.values());

}

에서 method의 return type을 ArrayList의 상위 인터페이스인 List로 지정한 이유가 궁금합니다.

 

MemeberRepository interface가 재사용될 때, list를 implement하는 다른 class들도 반환 type으로 사용할 수 있게 하기 위한 이유인가요?

 

특별한 이유가 있는 것인지 궁금합니다.

답변 1

0

안녕하세요. c.seonha님, 공식 서포터즈 y2gcoder입니다.

개인적으로 조심스럽게 추측해보건데 실무에서 많이 하시던대로 외부 노출은 인터페이스하신 게 아닌가 합니다. 이렇게 했을 때의 장점이라면 내부 구현체 리스트를 바꾸더라도 외부에 노출될 때는 List 인터페이스로 노출되기 때문에 findAll()을 사용하는 곳의 변경이 없다는 장점이 있습니다. 그리고 외부에서 사용할 때는 보통 List 인터페이스에 정의해놓은 메서드만 사용하기 때문에 구현체들의 부가적인 기능을 사용하지 않는다는 것도 이유일 것이라 생각합니다.

감사합니다.

유쾌한 고양이님의 프로필 이미지
유쾌한 고양이

작성한 질문수

질문하기