이 자습서에서는 this Java 키워드 를 살펴보겠습니다.
Java에서 this 키워드는 메서드가 호출되는 현재 객체에 대한 참조 입니다.
this 키워드를 언제 어떻게 사용할 수 있는지 알아보겠습니다.
this 키워드는 지역 매개변수에서 인스턴스 변수를 명확하게 하는 데 유용합니다.
가장 일반적인 이유는 인스턴스 필드와 이름이 같은 생성자 매개변수가 있는 경우입니다.
public class KeywordTest {
private String name;
private int age;
public KeywordTest(String name, int age) {
this.name = name;
this.age = age;
}
}
여기에서 볼 수 있듯이 매개변수와 구별하기 위해 name 및 age 인스턴스 필드와 함께 this를 사용합니다.
또 다른 사용법은 로컬 범위에서 매개변수 숨김 또는 섀도잉과 함께 사용 하는 것 입니다. 사용 예는 변수 및 메서드 숨김 문서에서 찾을 수 있습니다.
생성자에서 this() 를 사용 하여 동일한 클래스의 다른 생성자를 호출 할 수 있습니다. 여기서 코드 사용량을 줄이기 위해 생성자 연결에 this()를 사용합니다.
가장 일반적인 사용 사례는 매개변수화된 생성자에서 기본 생성자를 호출하는 것입니다.
public KeywordTest(String name, int age) {
this();
// the rest of the code
}
또는 인수가 없는 생성자에서 매개변수화된 생성자를 호출하고 일부 인수를 전달할 수 있습니다
public KeywordTest() {
this("John", 27);
}
this() 는 생성자의 첫 번째 명령문이어야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.
여기 에 this Keyword 인수가 정의된 printInstance() 메서드 가 있습니다.
public KeywordTest() {
printInstance(this);
}
public void printInstance(KeywordTest thisKeyword) {
System.out.println(thisKeyword);
}
생성자 내에서 printInstance() 메서드를 호출합니다. 이를 통해 현재 인스턴스에 대한 참조를 전달합니다.
this 키워드를 사용 하여 메서드에서 현재 클래스 인스턴스를 반환 할 수도 있습니다.
코드를 복제하지 않기 위해 다음은 빌더 디자인 패턴 에서 구현되는 방법에 대한 완전한 실제 예입니다.
우리는 또한 this를 내부 클래스 내에서 외부 클래스 인스턴스에 액세스하는 데 사용합니다.
public class KeywordTest {
private String name;
class ThisInnerClass {
boolean isInnerClass = true;
public ThisInnerClass() {
KeywordTest thisKeyword = KeywordTest.this;
String outerString = KeywordTest.this.name;
}
}
}
여기에서 생성자 내부에서 KeywordTest.this 호출 을 사용하여 KeywordTest 인스턴스에 대한 참조를 얻을 수 있습니다.
더 깊이 들어가 KeywordTest.this.name 필드와 같은 인스턴스 변수에 액세스할 수 있습니다.