this
คำหลักที่ถูกนำมาใช้เป็นหลักในสามสถานการณ์ ครั้งแรกและที่พบมากที่สุดคือในวิธีการตั้งค่าเพื่อ disambiguate อ้างอิงตัวแปร ที่สองคือเมื่อมีความจำเป็นต้องผ่านอินสแตนซ์ของคลาสปัจจุบันเป็นอาร์กิวเมนต์ไปยังวิธีการของวัตถุอื่น ที่สามเป็นวิธีการเรียก constructors สำรองจากภายในนวกรรมิก
กรณีที่ 1:การใช้this
เพื่อแก้ปัญหาการอ้างอิงตัวแปร ในเมธอดเซ็ตเตอร์ Java เรามักส่งผ่านอาร์กิวเมนต์ที่มีชื่อเดียวกันกับตัวแปรสมาชิกส่วนตัวที่เรากำลังพยายามตั้งค่า จากนั้นเราจะกำหนดโต้แย้งไปx
this.x
สิ่งนี้ทำให้ชัดเจนว่าคุณกำลังกำหนดค่าของพารามิเตอร์ "name" ให้กับตัวแปร instance "name"
public class Foo
{
private String name;
public void setName(String name) {
this.name = name;
}
}
กรณีที่ 2:ใช้this
เป็นอาร์กิวเมนต์ที่ส่งไปยังวัตถุอื่น
public class Foo
{
public String useBarMethod() {
Bar theBar = new Bar();
return theBar.barMethod(this);
}
public String getName() {
return "Foo";
}
}
public class Bar
{
public void barMethod(Foo obj) {
obj.getName();
}
}
กรณีที่ 3:การใช้this
เพื่อเรียก constructors สำรอง ในความคิดเห็นที่trinithisthis
ชี้ได้อย่างถูกต้องออกมาอีกใช้งานทั่วไปของ เมื่อคุณมีคอนสตรัคเตอร์หลายตัวสำหรับคลาสเดียวคุณสามารถใช้this(arg0, arg1, ...)
เรียกคอนสตรัคเตอร์อื่นที่คุณเลือกได้โดยให้คุณทำในบรรทัดแรกของตัวสร้าง
class Foo
{
public Foo() {
this("Some default value for bar");
//optional other lines
}
public Foo(String bar) {
// Do something with bar
}
}
ฉันเคยเห็นthis
เคยเน้นย้ำความจริงที่ว่าตัวแปรอินสแตนซ์กำลังถูกอ้างอิง (ไม่จำเป็นต้องแก้ความกำกวม) แต่นั่นเป็นกรณีที่หายากในความคิดของฉัน