이번 TIL에서는 자바의 메서드 체이닝과 return this;
의 개념을 알아보고, 이를 통해 코드를 간결하게 작성하는 방법을 공유하려 한다. 사실 처음에 return this;
라는 코드가 무엇을 의미하는지 이해가 가지 않았다. 그래서 찾아보니, 이 코드는 메서드 체이닝이라는 개념과 연결되어 있었고, 이를 통해 여러 메서드를 연속해서 호출할 수 있다는 사실을 알게 되었다.
메서드 체이닝은 한 객체의 여러 메서드를 연속해서 호출할 수 있게 하는 프로그래밍 방식이다. 즉, 메서드를 호출할 때마다 그 메서드가 현재 객체를 반환함으로써 다른 메서드를 바로 이어서 호출할 수 있다. 이를 통해 코드가 간결해지고, 여러 줄의 코드를 한 줄로 묶을 수 있다.
public class Calculator {
private int firstNumber;
private int secondNumber;
// 첫 번째 숫자를 설정하는 메서드
public void setFirstNumber(int firstNumber) {
this.firstNumber = firstNumber;
}
// 두 번째 숫자를 설정하는 메서드
public void setSecondNumber(int secondNumber) {
this.secondNumber = secondNumber;
}
// 두 숫자를 더하는 메서드
public int add() {
return firstNumber + secondNumber;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
// 메서드를 각각 따로 호출해야 함
calc.setFirstNumber(10);
calc.setSecondNumber(20);
int result = calc.add();
System.out.println(result); // 30 출력
}
}
public class Calculator {
private int firstNumber;
private int secondNumber;
// 첫 번째 숫자를 설정하는 메서드
public Calculator setFirstNumber(int firstNumber) {
this.firstNumber = firstNumber;
return this; // 현재 객체를 반환
}
// 두 번째 숫자를 설정하는 메서드
public Calculator setSecondNumber(int secondNumber) {
this.secondNumber = secondNumber;
return this; // 현재 객체를 반환
}
// 두 숫자를 더하는 메서드
public int add() {
return firstNumber + secondNumber;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
// 메서드 체이닝을 사용해 메서드를 연속해서 호출 가능
int result = calc.setFirstNumber(10)
.setSecondNumber(20)
.add();
System.out.println(result); // 30 출력
}
}
return this;
의 역할return this;
는 현재 객체 자신을 반환하는 역할을 한다. 메서드 체이닝을 가능하게 하는 핵심 개념으로, 호출된 메서드가 자신의 객체를 반환하여 다음 메서드를 바로 호출할 수 있게 해준다.
setFirstNumber()
메서드는 this
를 반환하여 현재 Calculator
객체를 반환하고, 이를 통해 바로 setSecondNumber()
를 호출할 수 있게 된다.setSecondNumber()
도 this
를 반환하여 add()
메서드를 호출할 수 있게 한다.메서드 체이닝과 return this;
를 사용하면 코드가 더 간결하고 가독성이 좋아진다. 이는 특히 객체의 상태를 여러 번 변경하거나 여러 메서드를 순차적으로 호출할 때 유용하다. 이를 통해 객체지향 프로그래밍의 장점을 극대화할 수 있으며, 보다 직관적인 코드를 작성할 수 있다.