## 📌 Map 값 안전하게 반환하는 방법 Map<Long, Member> store에 저장된 값을 외부에 반환하는 findAll() 메서드를 작성할 때, 단순히 store.values()만 리턴하는 건 위험하다. ```java public Collection<Member> findAll() { return store.values(); // ❌ 직접 참조 리턴 → 외부 수정 가능성 } ``` - store.values()는 store 내부 데이터를 직접 참조하는 뷰(view) 컬렉션이다. - 외부에서 findAll()로 받은 컬렉션을 clear(), remove() 등으로 조작하면 store 내부 데이터까지 영향을 받는다. ### 예시 ```java Collection<Member> members = repository.findAll(); members.clear(); // store 내부 데이터까지 삭제됨 ❌ ``` ### 해결방법 ```java public List<Member> findAll() { return new ArrayList<>(store.values()); // ✅ 복사본 리턴 } ``` - store.values()의 복사본을 새로 만들어 반환. - 외부에서 조작해도 내부 store에는 영향을 주지 않음. - 즉, 캡슐화(Encapsulation)를 지키는 안전한 방법.
Activity