"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之间的区别进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
因为在项目中遇到了instanceof,因此总结了对instanceof关键字的理解,有需要的可以下载来看看。
NULL 博文链接:https://chaoyi.iteye.com/blog/2079574
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据
判断一个变量的类型尝尝会用 typeof 运算符而他毕竟有些缺陷,就是无论引用的是什么类型的对象,它都返回object,这时就要用到instanceof来检测某个对象是不是另一个对象的实例
主要是对JavaScript中instanceof运算符的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
两个运算符虽然比较相似,其实区别还是非常大的,虽然不难区别,但是对于初学者可能稍有困扰,下面就简单介绍一下它们两者的区别,希望对需要的朋友有所帮助
那么instanceof的这种行为到底是如何实现的呢,现在让我们揭开instanceof背后的迷雾。 instanceof原理 照惯例,我们先来看一段代码: 代码如下: function Cat(){} Cat.prototype = {} function Dog(){} Dog.prototype...
instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。接下来通过本文给大家介绍java 中的instanceof用法详解及instanceof是什么意思,需要的朋友参考...
instanceof和typeof都能用来判断一个变量是否为空或是什么类型的变量。