토이 프로젝트로 간단한 메모장 기능을 만들고 있는데, 리스트에 문자열을 저장하고 출력하려고 합니다.
코드:
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> memoList = new ArrayList<>();
addMemo(memoList, "공부하기");
System.out.println("메모 목록: " + memoList);
}
public static void addMemo(List<String> list, String text) {
List<String> newList = new ArrayList<>(list);
newList.add(text);
}
}
오류: 메모 목록: []
시도: addMemo 메서드 안에서 add를 분명히 호출했고, 리스트 변수명도 맞게 썼는데 왜 저한테는 계속 빈 괄호만 나오는지 모르겠어요.
질문: 왜 addMemo 메서드에서 추가한 값이 main 메서드의 memoList에는 반영되지 않는 건가요?
댓글5
-
빗방울
2026.10.31 11:35
-
빗방울
2026.10.31 13:06
맞아요ㅋㅋ 저도 예전에 이거 때문에 한 시간 동안 헤맸던 기억나네요.
-
빗방울
2026.10.31 12:45
참조 타입 개념 헷갈리면 처음에 진짜 많이 하는 실수임ㅋㅋ
원래 리스트 주소값이 복사되는 건데 아예 새 객체를 만드셔서 그래요.
자바 기초 강의 다시 한번 훑어보시는 거 추천함.
-
빗방울
2026.10.31 13:42
ㄹㅇ 참조 타입 개념 잡기 전까진 계속 헷갈리는 부분인듯ㅋㅋ 기초 탄탄히 해두면 나중에 훨씬 편해요.
-
빗방울
2026.10.31 13:55
아니 근데 저거 뉴 리스트로 만들면 사실상 복사본에 저장하는 꼴이라ㅋㅋ
메서드에서 return newList 해주고 main에서 다시 받아주면 돌아가긴 할듯요?
모든 이야기1455
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
총 1455개의 이야기
newList라는 새로운 리스트를 계속 만들어서 거기다 넣고 계시네요ㅋㅋ 그냥 list.add로 바로 넣으시면 될듯요.