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
thislà final reference – không thể gán lại.thiskhô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,
thistrỏ đến đối tượng đang gọi phương thức đó.