[Basic-1] Pass by Value와 Pass by Reference

2025. 3. 28. 09:43·Java/Core
Map<String, Object> model = new HashMap<>(); // 빈 모델 생성
String viewName = controller.process(paramMap, model); // ⓵ 컨트롤러 호출
view.render(model, request, response); // ⓶ 모델 사용
public String process(Map<String, String> paramMap, Map<String, Object> model) {
    // ⓵-1: 파라미터에서 데이터 추출
    String username = paramMap.get("username");
    int age = Integer.parseInt(paramMap.get("age"));

    // ⓵-2: 회원 저장
    Member member = new Member(username, age);
    memberRepository.save(member);

    // ⓵-3: 모델에 데이터 추가 (핵심!)
    model.put("member", member); // 원본 model 객체가 수정됨

    return "save-result"; // 뷰 이름 반환
}


위에서 controller.process(paramMap, model)을 수행하면, 내부적으로 model에 "member"라는 Key와 member라는 value가 저장된다. 이때 리턴값은 String이다.

 

이때 파라미터 자체가 Map<String, Object> model이라는 객체이므로 "Pass by Reference"이다. 즉, 리턴값이 void더라도, 메서드를 호출한 FrontController에서의 Map<String, Object> model = new HashMap<>()의 빈 모델 안에는 해당 값이 존재한다.

 

 이때 파라미터로 전달되는 model의 주소값과 현재 FrontController에 있는 model의 주소 값이 동일하기 때문에 model은 파라미터로 전달된 참조를 통해 원본이 수정된다.

'Java > Core' 카테고리의 다른 글

[Stream-4][Optimization] 실무 적용과 성과 증명 전략  (0) 2025.12.27
[Stream-3][Optimization] Filter Overhead를 활용한 성능 개선 사례  (0) 2025.12.27
[Stream-2][Optimization] 선택도(Selectivity)와 비용(Cost)의 이해  (0) 2025.12.27
[Stream-1][Optimization] 선언적 프로그래밍과 지연 평가(Lazy Evaluation)  (0) 2025.12.27
[Basic-2] 제네릭과 제네릭 메서드  (0) 2025.08.28
'Java/Core' 카테고리의 다른 글
  • [Stream-3][Optimization] Filter Overhead를 활용한 성능 개선 사례
  • [Stream-2][Optimization] 선택도(Selectivity)와 비용(Cost)의 이해
  • [Stream-1][Optimization] 선언적 프로그래밍과 지연 평가(Lazy Evaluation)
  • [Basic-2] 제네릭과 제네릭 메서드
h6bro
h6bro
백엔드 개발자의 기술 블로그
  • h6bro
    Jun's Tech Blog
    h6bro
  • 전체
    오늘
    어제
    • 분류 전체보기 (250) N
      • Java (18)
        • Core (9)
        • Design Pattern (9)
      • Spring (80)
        • Core (24)
        • MVC (6)
        • DB (10)
        • JPA (26)
        • Monitoring (3)
        • Security (11)
        • WebSocket (0)
      • Database (33)
        • Redis (15)
        • MySQL (18)
      • MSA (25) N
        • MSA 기본 (11)
        • MSA 아키텍처 (14) N
      • Kafka (30)
        • Core (18)
        • Connect (12)
      • ElasticSearch (11)
        • Search (11)
        • Logging (0)
      • Test (4)
        • k6 (4)
      • Docker (9)
      • CI&CD (10)
        • GitHub Actions (6)
        • ArgoCD (4)
      • Kubernetes (18)
        • Core (12)
        • Ops (6)
      • Cloud Engineering (4)
        • AWS Infrastructure (3)
        • AWS EKS (1)
        • Terraform (0)
      • Project (8)
        • LinkFolio (1)
        • Secondhand Market (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Cloud Engineering 포스팅 정리
  • 인기 글

  • 태그

    ㅈ
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
h6bro
[Basic-1] Pass by Value와 Pass by Reference
상단으로

티스토리툴바