instanceof在实际开发中常用于类型强转时的判断,如在项目中不进行判断进行强制转换会出现类型转换异常
public interface Animal{
}
public class Animalmpl implements Animal{
}
public class Dog extend Animalmpl {
}
public class DogSon extend Animalmpl {
}
void test(){
Animalmpl dog_animalmpl = new Dog()
Dog dogson_dog = new DogSon()
Animalmpl dogson_animalpl = new DogSon()
Animal dogson_animal = new DogSon()
System.out.println(dog_animalmpl instanceof Animalmpl );//返回true
System.out.println(dog_animalmpl instanceof Animal );//返回true
System.out.println(dogson_dog instanceof DogSon);//返回true
System.out.println(dogson_dog instanceof Dog );//返回true
System.out.println(dogson_dog instanceof Animalmpl );//返回true
System.out.println(dogson_dog instanceof Animal );//返回true
System.out.println(dog_animalmpl instanceof dogson_dog );//返回false
总结:
如果 A instanceof B
用于判断A的具体实现对象,B为A的父类、A父类的实现接口、A本身时返回true
B为A的子类或者A本身为null时返回false
}