참조 타입을 넘기면 Call By Reference처럼 보이는 자바의 동작을 표면만 외운 사람과, 참조값 복사로 메모리 모델 수준에서 해석할 수 있는 사람을 가르는 질문이다.
Call By Value는 인자를 복사해 전달하므로 호출자 변수와 피호출자 파라미터가 별개로 동작한다. Call By Reference는 동일 참조를 공유해 피호출자에서의 변경이 호출자에 그대로 반영된다. 자바는 원시값뿐 아니라 참조값까지도 복사해서 전달하므로 Call By Value만 존재한다. 메서드 안에서 객체 내부가 바뀌는 게 보이는 이유는 복사된 참조가 같은 객체를 가리키기 때문이지, 참조 자체가 공유돼서가 아니다.
서비스 코드에서 객체 필드가 의도치 않게 바뀌어 디버깅했던 경험을 참조값 복사 동작과 연결할 수 있다
불변 객체나 record를 도입해 부작용을 줄였던 결정과 자바의 값 전달 동작을 엮어 설명할 수 있다
메서드 시그니처나 컬렉션 반환 타입에 변경 의도를 드러내도록 바꿨던 경험을 말할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.