`
willdomybest
  • 浏览: 17664 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

instanceof

    博客分类:
  • Java
 
阅读更多
"instanceof" 用于判断 左侧是否为右侧的实例对象,返回值为布尔型。

简单的解释如下:

如果   A a=new A()   正确  ====》 a instanceof A   返回 true

例:

  有三个类,类名以及它们之间的关系如下

   Animal (Superclass)     Dog(Subclass)     Cat(Subclass)

   则可得出如下对象

   Animal  animal =new Animal (); ====》animal  instanceof Animal    返回 true

   Dog   dog=new  Dog();====》dog  instanceof  Dog    返回 true

   Cat    cat=new  Cat();====》cat  instanceof  Cat    返回  true

   Animal  dog=new  Dog();====》dog  instanceof  Animal    返回 true

   Animal  cat=new  Cat();====》cat  instanceof  Animal    返回 true

从上面的例子可以看出 instanceof 的书写规则  如下图:

    

instanceof 通常用于根据不同的实例调用不同的方法:

<1>在有继承关系的类中我们可以通过多态来调用不同实例中的不同方法:

  如有实例

  Animal dog=new Dog();
  Animal cat=new Cat();

   List list = new ArrayList();

  list.add(dog);
  list.add(cat);

   Iterator it = list.iterator();
  while (it.hasNext()) {
     it.next().animalDo();

  }

在这里我们可以在Dog与Cat类中重写Animal中的animalDo方法,通过调用animalDo方法,

然后会自动根据不同的实例调用不同类中的方法(多态知识)。

   <2>在没有继承关系的类中,我们可以通过instanceof来判断当前实例,然后很据不同实例调用不同方法:

   如有实例

  ZhangSan zs = new ZhangSan();
  LiSi ls = new LiSi();
  YuYiHua yyh = new YuYiHua();

   List list = new ArrayList();

  list.add(zs);
  list.add(ls);
  list.add(yyh);

  Iterator it = list.iterator();
  while (it.hasNext()) {
   Object obj = it.next();
   if (obj instanceof ZhangSan) {
    ZhangSan zs1 = (ZhangSan) obj;
    zs1.zhangsanDo();
   }
   if (obj instanceof LiSi) {
    LiSi ls1 = (LiSi) obj;
    ls1.lisiDo();
   }
   if (obj instanceof YuYiHua) {
    YuYiHua yyh1 = (YuYiHua) obj;
    yyh1.yuyihuaDo();
   }
  }

在这里我们可以通过instanceof 判断结果,执行不同类中的相应动作方法(zhangsanDo()、lisiDo()、yuyihuaDo())。

一般在使用无泛型的集合(List、set等)时,比较多的使用  instanceof  ,由于集合能够存各种对象,所以在读取时一般要进行相应的判断。
分享到:
评论

相关推荐

    JS中typeof与instanceof之间的区别总结

    本文是对JS中typeof与instanceof之间的区别进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    instanceof关键字.md

    因为在项目中遇到了instanceof,因此总结了对instanceof关键字的理解,有需要的可以下载来看看。

    instanceof关键字

    NULL 博文链接:https://chaoyi.iteye.com/blog/2079574

    Java中instanceof关键字的用法总结

    instanceof是Java的一个二元操作符,和==,&gt;,&lt;是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据

    JavaScript instanceof 的使用方法示例介绍

    判断一个变量的类型尝尝会用 typeof 运算符而他毕竟有些缺陷,就是无论引用的是什么类型的对象,它都返回object,这时就要用到instanceof来检测某个对象是不是另一个对象的实例

    JavaScript中instanceof运算符的用法总结

    主要是对JavaScript中instanceof运算符的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    instanceof和typeof运算符的区别详解

    两个运算符虽然比较相似,其实区别还是非常大的,虽然不难区别,但是对于初学者可能稍有困扰,下面就简单介绍一下它们两者的区别,希望对需要的朋友有所帮助

    理解Javascript_07_理解instanceof实现原理

    那么instanceof的这种行为到底是如何实现的呢,现在让我们揭开instanceof背后的迷雾。 instanceof原理 照惯例,我们先来看一段代码: 代码如下: function Cat(){} Cat.prototype = {} function Dog(){} Dog.prototype...

    java 中的instanceof用法详解及instanceof是什么意思(推荐)

    instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。接下来通过本文给大家介绍java 中的instanceof用法详解及instanceof是什么意思,需要的朋友参考...

    javascript instanceof 与typeof使用说明

    instanceof和typeof都能用来判断一个变量是否为空或是什么类型的变量。

Global site tag (gtag.js) - Google Analytics