[Java] return this

박성우·2023년 4월 5일
0

Java

목록 보기
1/6

Java 문법에서 this를 사용하는 경우 중 this. 뒤에 붙여 멤버 필드, 메서드, 생성자 등에 접근하는 경우 외에 this 자체를 사용하는 경우가 있다.

그 이유는 바로 해당 클래스의 참조값을 넘기기 위해서이다.

클래스 내부에서 this 자체로 쓰이는 경우, 아직 객체로 만들어지기 전에 참조값을 가질 수 있나 싶지만, 객체가 메모리를 할당 받는 순간에 그 객체 변수의 참조값을 의미하는 것이다.

return this;

메서드는 객체가 생성된 후에 호출 할 수 있기 때문에, 결국 메서드 내부에서 실행되는 이 코드는 해당 클래스를 통해 만들어진 객체의 참조값을 반환하는 것이다.

그렇다면, 객체가 생성되기도 전부터 사용 가능한 static 메서드에서 또한 사용이 가능할까

당연하게도 사용하지 못한다. 아직 생기지도 않은 참조값을 반환할 수는 없기 때문에..


Class Player {
	Player setName(String name){
		this.name = name;
		return this;
     }
 
// or

	void setName(String name){
		this.name = name;
     }
}

위의 두 메서드는 결국 this.name = name; 을 통해 같은 동작을 수행하는데 아래 메서드와 같이 리턴값을 void로 선언하면 될 것을 왜 굳이 자기 자신의 참조값을 리턴시키도록 하는 이유가 뭘까

이유는 간단하다. 리턴값이 있기 때문.

해당 함수만 호출하고 끝나면 두 메서드에 차이는 없겠지만, 리턴값을 가지고 다른 행위를 더 수행하고 싶다면 첫번째 메서드를 사용하여야 한다.

예를 들어, 첫번째 메서드로는

player.setName().getName()

하면 되는 문제를 두번째 메서드로는

player.setName()
player.getName()

해야한다.

profile
Backend Developer

0개의 댓글