Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Có thể gán tham chiếu cho 'this' trong Java không?

Từ khóa "this" trong Java dùng như tham chiếu đến đối tượng hiện tại, bên trong phương thức instance hoặc constructor. Dùng nó để tham chiếu các thành viên của lớp: constructor, biến, phương thức.

Gán tham chiếu cho "this"

Theo định nghĩa, "this" là từ khóa đóng vai trò tham chiếu đến đối tượng hiện tại (đối tượng mà từ constructor/phương thức của nó bạn đang dùng), giá trị của nó là cố định (fixed). Do đó, bạn không thể gán giá trị tham chiếu mới cho nó. Hơn nữa, nó chỉ là từ khóa, không phải biến.

Nếu vẫn cố gán tham chiếu cho "this", sẽ dẫn đến lỗi compile-time.

Ví dụ

Lớp ExampleClass có hai biến private name, age và constructor có tham số khởi tạo chúng. Từ phương thức display, thử gán giá trị mới cho "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); // LỖI COMPILE 
    } 
}

Lỗi compile-time

ExampleClass.java:14: error: cannot assign a value to final variable this 
    this = new ExampleClass("krishna", 23); 
    ^ 
1 error

Giải thích

  • this là final reference – không thể gán lại.
  • this không phải biến, là từ khóa (keyword).
  • Trong constructor, this(...) dùng để gọi constructor khác của cùng lớp (constructor chaining), không phải gán giá trị.
  • Trong instance method, this trỏ đến đối tượng đang gọi phương thức đó.