您的位置:首页 > 编程语言 > Java开发

Java中instanceof关键字的用法总结

2014-02-10 22:36 447 查看
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。

用法: 某个实例对象 instanceof 某个类名

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

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

例1:

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

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

复制代码 代码如下:

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方法,然后会自动根据不同的实例调用不同类中的方法.
二、在没有继承关系的类中,我们可以通过instanceof来判断当前实例,然后很据不同实例调用不同方法:

例2:

复制代码 代码如下:

Station s = new Station();

Cell c = new Cell();

List list = new ArrayList();

list.add(s);

list.add(c);

Iterator it = list.iterator();

while (it.hasNext()) {

Object obj = it.next();

if (obj instanceof Station ) {

Station s1 = (Station ) obj;

s1.stationDo();

}

if (obj instanceof Cell ) {

Cell c1 = (Cell ) obj;

c1.cellDo();

}

}

在这里我们可以通过instanceof 判断结果,执行不同类中的相应动作方法(stationDo()、cellDo())。
一般在使用无泛型的集合(List、set等)时,比较多的使用 instanceof ,由于集合能够存各种对象,所以在读取时一般要进行相应的判断。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: