"สวัสดี Amigo! คุณได้พบกับ ตัวดำเนินการ อินสแตนซ์ออฟแล้ว วันนี้ฉันจะบอกคุณว่าจะใช้ได้อย่างไรและที่ใดอินสแตนซ์ของเป็นโอเปอเรเตอร์ที่ง่ายและมีประสิทธิภาพมาก"

"นั่นฟังดูเหมือนโฆษณา!"

"มันง่ายมาก มันใช้แบบนี้«object» instanceof «class» . "

ตรวจสอบว่าวัตถุเป็นอินสแตนซ์ของคลาสใดคลาสหนึ่งหรือไม่ มันง่ายกว่าการอธิบาย ดูตัวอย่างนี้:

รหัส คำอธิบาย
Object o = new Integer(3);
boolean isInt = o instanceof Integer;
isIntจะเป็นจริง วัตถุที่อ้างอิงโดยตัวแปร o เป็นอินสแตน ซ์ของ คลาส จำนวนเต็ม
Object o = "Mama";
boolean isInt = o instanceof Integer;
isIntจะเป็นเท็จ วัตถุที่อ้างอิงโดยตัวแปร o ไม่ใช่อินส แตนซ์ของ คลาส จำนวนเต็ม มันเป็นวัตถุสตริง
InputStream is = new FileInputStream("");
boolean isFIS = is instanceof FileInputStream;
isFISจะเป็นจริง วัตถุที่อ้างอิงโดยตัวแปร o เป็นอินสแตนซ์ของคลาสFileInputStream

"ใช่ มันง่ายมาก"

"โอเปอเรเตอร์นี้ยังอธิบายถึงการสืบทอด ลองดูสิ"

รหัส คำอธิบาย
class Animal
{
}
class Cat extends Animal
{
}
class Tiger extends Cat
{
}
ที่นี่เรามีประกาศสามประเภท: สัตว์ แมว และเสือ แมวสืบทอดสัตว์ และไทเกอร์ก็สืบทอดแคท
Object o = new Tiger();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  จะ  เป็นจริง
isTigerจะ เป็น  จริง
isAnimal  จะ  เป็นจริง
Object o = new Animal();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCatจะ เป็นเท็จ
isTigerจะ เป็น  เท็จ
isAnimal  จะ  เป็นจริง

และแม้แต่อินเทอร์เฟซ:

รหัส คำอธิบาย
interface Moveable
{
}
class Cat
{
}
class TomCat extends Cat implements Moveable
{
}
สร้างสองคลาส: Cat, TomCat และอินเทอร์เฟซที่เคลื่อนย้ายได้
Cat o = new TomCat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  จะ  เป็นจริง
isMoveable  จะ  เป็นจริง
isTom  จะเป็น  ความจริง
Cat o = new Cat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  จะ  เป็นจริง
isMoveableจะ เป็น  เท็จ
isTomจะ เป็น  เท็จ

ตัวดำเนินการของอินสแตนซ์มีลักษณะดังนี้: ตัว ดำเนินการอินสแตนซ์ ของB

กล่าวอีกนัยหนึ่ง ตัวดำเนินการ ของอินสแตนซ์จะคืนค่าเป็นจริงหาก:

1)ตัวแปรaเก็บการอ้างอิงไปยังวัตถุประเภทB

2)  ตัวแปรaเก็บการอ้างอิงไปยังวัตถุที่มีคลาสสืบทอด  B

3)  ตัวแปรaเก็บการอ้างอิงไปยังวัตถุที่ใช้อินเทอร์เฟซ  B

มิฉะนั้น ตัวดำเนินการ instanceofจะส่งคืนค่าเท็จ

"เข้าใจแล้ว เหตุใดจึงจำเป็น ลุงริชิ"

"วันนี้ Ellie จะบอกคุณเกี่ยวกับเรื่องนี้ นี่เป็นผู้ดำเนินการที่ดีจริงๆ คุณจะมั่นใจได้ในวันนี้"