重複の可能性:
instanceof - 互換性のない条件付きオペランドの型
私は、Java の "instance of" 演算子をテストして、頭を整理しています。参照がクラスのインスタンスであるかどうかを確認するためにキーワードが使用されていることがわかります。
しかし、参照を使用してクラスと IS-A 関係を持たないクラスと比較すると、コンパイル時にエラーが発生します。
次のコードを参照してください。
package instanceofdemo;
public class Sample_1 {
public static void main(String a[]){
A iface = new Subclass();
///HERE INTERFACE OBJECT IS DOWNCASTED TO SUBCLASS
if(iface instanceof SuperClass){
System.out.println("iface instanceof SuperClass");
}
///HERE INTERFACE OBJECT IS DOWNCASTED TO SUBCLASS
if(iface instanceof Subclass){
System.out.println("iface instanceof Subclass");
}
if(iface instanceof A){
System.out.println("iface instanceof A");
}
Subclass sub = new Subclass();
//SO INSTANCE OF ONLY WORKS WITH IS-A RELATION SHIP IN BI-DIRECTIONAL WAY
//IT WILL GIVE COMPILE TIME ERROR, IF YOU TRY TO USE INSTANCE-OF WITH NON-RELATED CLASS
if(sub instanceof Independent){
}
}
}
interface A{
}
class SuperClass implements A {
}
class Subclass extends SuperClass{
}
class Independent{
}
上記のコード: if(iface instance of Independent)
bcoz の行でコンパイル エラーが発生した場合 iface は Independent と「IS-A」関係にありません。
次に、キーワードの insatance の正確な使用法は何ですか? 「IS-A」関係でのみ使用される場合... if条件がfalseになる変更はどこにありますか??