작성
·
288
0
public List<Member> findAll() {
return new ArrayList<>(store.values());
}
store에 있는 값을 전체 조회하는 부분에서 new ArrayList<>(); 를 해주었는데
이 이유가 반환값에 컬렉션이다 보니 store.values()를 반환하게 되면
findAll() 메서드를 호출하는 곳에서 store의 데이터 조작이 가능하기 때문인게 맞을까요??
맞다면 findAll() 메서드 외에도 다른 경우에도 리턴값을 줄때 변경이 불가능하도록 new를 통해 새로운 객체를 리턴해주던지
dto와 같은 객체를 통해서 리턴을 해주어 변경에 닫혀있도록 구현해주는 것이 좋은 구현인지 궁금합니다
답변 1
1
안녕하세요. youn님
생각하신 것 처럼 가장 좋은 것은 모든 데이터를 복사해서 넘겨주는 것입니다.
예제에서 그 부분까지 구현하기는 너무 복잡해서 해당 부분은 생략했다고 이해하시면 됩니다.
감사합니다.
아하! 답변 감사합니다! :D