Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 this 키워드에 새로운 참조를 할당할 수 있을까?

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 자체를 바꾸는 대신, 필드 값을 수정하는 방식으로 접근해야 합니다.