- 참조형 반환타입이란?
메서드의 매개변수 뿐만 아니라 반환타입도 참조형이 될 수 있다.
반환타입이 참조형이라는 것은 반환하는 값이 '객체의 주소'라는 것!
static Data copy(Data d) {
Data tmp = new Data(); // 새로운 객체 tmp를 생성한다.
tmp.x = d.x; // d.x의 값을 tmp.x에 복사한다.
return tmp; // 복사한 객체의 주소를 반환한다.
}
이 메서드의 반환타입이 'Data'이므로, return 값의 타입은 'Data' 타입의 참조변수여야 한다.
예시로, Data d2 = copy(d)의 실행과정은 아래와 같다.
- copy 메서드를 호출하면 참조변수 d의 값이 매개변수 d에 복사
- 새로운 객체를 생성한 다음 d.x에 저장된 값을 tmp.x에 복사
- copy 메서드가 종료되면서 반환한 tmp의 값은 참조변수 d2에 저장
- copy 메서드가 종료되어 tmp가 사라졌지만, d2로 새로운 객체를 다룰 수 있음
"반환타입이 '참조형'이라는 것은
메서드가 '객체의 주소'를 반환한다는 것을 의미한다.
참고문헌 : 남궁성(2016), Java의 정석, 도우출판