Java에서 this 키워드는 인스턴스 메서드나 생성자 내부에서 현재 객체를 가리키는 참조(reference)로 사용됩니다. 이를 통해 클래스의 멤버인 생성자, 변수, 메서드 등에 접근할 수 있습니다.
this에 참조 값 할당하기
정의에 따르면 this는 현재 객체(해당 키워드가 사용된 생성자나 메서드가 속한 객체)를 가리키는 참조 역할을 하는 키워드이며, 그 값은 고정되어 있습니다. 따라서 this에는 새로운 참조 값을 할당할 수 없습니다. 게다가 this는 변수가 아니라 단순히 키워드일 뿐입니다.
그럼에도 불구하고 this에 참조 값을 할당하려고 시도하면 컴파일 오류가 발생합니다.
예제
다음 Java 프로그램에서 ExampleClass 클래스는 name과 age라는 두 개의 private 변수와, 이 변수들을 초기화하는 매개변수가 있는 생성자를 가지고 있습니다. 그리고 display라는 메서드 안에서 this에 새로운 값을 할당하려고 시도합니다.
public class ExampleClass {
private String name;
private int age;
public ExampleClass(String name, int age){
this.name = name;
this.age = age;
}
public void display(){
this = new ExampleClass("krishna", 23);
}
}컴파일 타임 오류
이 프로그램을 컴파일하면 아래와 같은 오류가 발생합니다.
ExampleClass.java:14: error: cannot assign a value to final variable this
this = new ExampleClass("krishna", 23);
^
1 error정리
this는 사실상 final 변수처럼 취급되기 때문에 한 번 설정된 참조를 변경할 수 없습니다. 객체 자신을 가리키는 고정된 참조라는 특성 때문에, 재할당 시도는 항상 컴파일 에러로 이어집니다. 객체의 상태를 변경하고 싶다면 this 자체를 바꾸는 대신, 필드 값을 수정하는 방식으로 접근해야 합니다.