Post

Java this 키워드

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 필드와 같은 인스턴스 변수에 액세스할 수 있다.

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.