instanceof

养成一个好习惯:在向下转型时,都需要使用instanceof判断一下,避免ClassCastException出现。

向下转型的风险:

  Animal a2 = new Bird();
  Cat c2 = (Cat) a2;
  /*
    编译通过,运行报错
    java.lang.ClassCastException  类型转换异常
  */

如何避免这个风险?--------instanceof

  • instanceof可以在运行时动态判断引用指向的对象的类型

  • instanceof语法:

    引用 instanceof 类型

  • instanceof运算符的结果只能是true/false

  • c是一个引用,指向一个对象,Cat是一个类

    c instanceof(Cat) 就可以判断c是不是Cat类型

使用场景:
if( c instanceof(Cat)){
   
    Cat ca = (Cat) c;  //先判断c是不是一个Cat,如果是才把他向下转换成Cat
    ca.catMosue();
}

posted @ 2021-10-02 10:52  这个世界会好的  阅读(357)  评论(0编辑  收藏  举报