其實這個問題以前也困擾過我。我個人理解的乙個應用場合就是,當你拿到乙個物件的引用時(例如引數),你可能需要判斷這個引用真正指向的類。所以你需要從該類繼承樹的最底層開始,使用instanceof操作符判斷,第乙個結果為true的類即為引用真正指向的類。
例如下面的例子:
class person{}
class student extends person{}
class postgraduate extends student{}
class animal{}
public class instanceoftester
public static void instanceoftest(person p) else if(p instanceof student) else if(p instanceof person) else if(p instanceof object)
/*if(p instanceof animal)*/}}
這個程式的輸出結果是:p是類student的例項
person類所在的繼承樹是:object<--person<--student<--postgraduate。
這個例子中還加入乙個animal類,它不是在person類的繼承樹中,所以不能作為instanceof的右運算元。
你可以跑跑程式,應該就明白什麼意思了。
instanceof的應用場合應該還有其它,看看其他朋友有沒補充。
java中的instanceof用法
乙個類的物件可以轉換成繼承鏈中的另乙個類的物件。在進行物件轉換時必須注意 1 乙個子類物件的型別可以向上轉換,即乙個子類可以轉換成它的父類。這種轉換是安全的,因為子類中含有父類的資訊,子類是父類的乙個超集。轉換的結果是丟失子類中新定義的資訊。2 乙個父類物件的型別一般來說是不可以向下轉換成它的子類,...
Java中instanceof的用法
instanceof 運算子作用 instanceof 用法boolean result object instanceof class引數 result 布林型別。object 任意物件表示式。class 任意已定義的物件類。如果 object 是 class 的乙個例項,則返回 true。如果 ...
java中的instanceof判斷
有的朋友遇到if判斷中的instanceof不知道什麼意思 eg 問題 public class shout class student extends shout class sample 答案 a instanceof b a是乙個物件 使用new例項的物件 b是乙個類 不是方法名 他表示a這個...