“你好,阿米戈!你已經接觸過instanceof操作符了。今天我將告訴你它的使用方法和使用位置。instanceof是一個非常簡單高效的操作符。”

“這聽起來像廣告!”

“真的很簡單。它是這樣使用的:«object» instanceof «class»。”

它檢查對像是否是特定類的實例。這比解釋它更容易。看這個例子:

代碼 描述
Object o = new Integer(3);
boolean isInt = o instanceof Integer;
isInt將為。變量 o 引用的對像是Integer類的一個實例。
Object o = "Mama";
boolean isInt = o instanceof Integer;
isInt將為變量 o 引用的對像不是Integer類的實例。它是一個字符串對象。
InputStream is = new FileInputStream("");
boolean isFIS = is instanceof FileInputStream;
isFIS將為。變量 o 引用的對像是FileInputStream類的一個實例。

“是的,那很簡單。”

“這個算子也算繼承了,你看看。”

代碼 描述
class Animal
{
}
class Cat extends Animal
{
}
class Tiger extends Cat
{
}
這裡我們有三個類聲明:Animal、Cat 和 Tiger。貓繼承動物。Tiger 繼承了 Cat。
Object o = new Tiger();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat 將為 true
isTiger 將為 
isAnimal 將為 true
Object o = new Animal();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat 將為false
isTiger 將為 false
isAnimal 將為 true

甚至接口:

代碼 描述
interface Moveable
{
}
class Cat
{
}
class TomCat extends Cat implements Moveable
{
}
創建兩個類:Cat、TomCat 和 Moveable 接口
Cat o = new TomCat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat 將為 true
isMoveable 將為 true
isTom 將為 true
Cat o = new Cat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat 將為 true
isMoveable 將為 false
isTom 將為 false

instanceof 運算符如下所示:a instanceof B

換句話說,如果出現以下情況,instanceof運算符將返回true

1)變量a存儲了對類型B對象的引用

2) 變量a存儲了一個對象的引用,該對象的類繼承了 B

3) 變量a存儲對實現接口B的對象的引用 

否則,instanceof運算符將返回false

“明白了。那麼為什麼這是必要的,Rishi 叔叔?”

“Ellie 今天要告訴你這件事。這是一個非常好的接線員。你今天會相信這一點。”