Java this 키워드
1. this 키워드란
Java에서 this 키워드는 메서드가 호출되는 현재 객체에 대한 참조 이다.
2. 필드 섀도잉 명확화
this 키워드는 지역 매개변수에서 인스턴스 변수를 명확하게 하는 데 유용하다. 가장 일반적인 이유는 인스턴스 필드와 이름이 같은 생성자 매개변수가 있는 경우이다.
1
2
3
4
5
6
7
8
9
10
public class KeywordTest {
private String name;
private int age;
public KeywordTest(String name, int age) {
this.name = name;
this.age = age;
}
}
여기에서 볼 수 있듯이 매개변수와 구별하기 위해 name 및 age 인스턴스 필드와 함께 this를 사용한다.
다른 사용법은 로컬 범위에서 매개변수 숨김 또는 섀도잉과 함께 사용 하는 것 이다.
3. 같은 클래스의 생성자 참조
생성자에서 this()를 사용 하여 동일한 클래스의 다른 생성자를 호출 할 수 있다. 여기서 코드 사용량을 줄이기 위해 생성자 연결에 this()를 사용한다.
가장 일반적인 사용 사례는 매개변수화된 생성자에서 기본 생성자를 호출하는 것이다.
1
2
3
4
5
public KeywordTest(String name, int age) {
this();
// the rest of the code
}
또는 인수가 없는 생성자에서 매개변수화된 생성자를 호출하고 일부 인수를 전달할 수 있다.
1
2
3
public KeywordTest() {
this("John", 27);
}
this()가 생성자의 첫 번째 문이어야 하며 그렇지 않으면 컴파일 오류가 발생한다.
4. 매개변수 전달
여기에 this Keyword 인수가 정의된 printInstance() 메서드가 있다.
1
2
3
4
5
6
7
public KeywordTest() {
printInstance(this);
}
public void printInstance(KeywordTest thisKeyword) {
System.out.println(thisKeyword);
}
생성자 내에서 printInstance() 메서드를 호출 한다. 이를 통해 현재 인스턴스에 대한 참조를 전달한다.
5. 반환
this 키워드를 사용 하여 메서드에서 현재 클래스 인스턴스를 반환 할 수도 있다.
코드를 복제하지 않기 위해 다음은 빌더 디자인 패턴 에서 구현되는 방법에 대한 완전한 실제 예이다.
6. 내부 클래스 내의 this 키워드
또한 this를 내부 클래스 내에서 외부 클래스 인스턴스에 액세스하는 데 사용한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 필드와 같은 인스턴스 변수에 액세스할 수 있다.