Java中instanceof关键字用法
2015-10-02 13:11
666 查看
java中可以通过instanceof关键字来判断一个对象是否是某一个类的实例:
用法:对象 instanceof 类 ->返回boolean类型
即:如果object是class的实例,instanceof运算之后返回true,否则返回false
下面看例子:
1.通过向上转型实例化:
输出结果:
a1是A的实例么?:true
a1是B的实例么?:false
------------------------
a2是A的实例么?:true
a2是B的实例么?:false
2.通过向下转型实例化:
传入两个实例,如果不加intanceof判断的话,会出错
所以需要加上instanceof判定,如下:
输出结果:
a是A的实例么?:true
a是B的实例么?:true
-----------------------------------
b是C的实例么?:false
b是B的实例么?:true
b是A的实例么?:true
-----------------------------------
c是C的实例么?:true
c是B的实例么?:true
c是A的实例么?:true
用法:对象 instanceof 类 ->返回boolean类型
即:如果object是class的实例,instanceof运算之后返回true,否则返回false
下面看例子:
1.通过向上转型实例化:
class A { } class B extends A { } public class PolymorphismDemo2{ public static void main(String[] args) { A a1 = new B(); A a2 = new A(); System.out.println("a1是A的实例么?:"+(a1 instanceof A)); System.out.println("a1是B的实例么?:"+(a2 instanceof B)); System.out.println("------------------------"); System.out.println("a2是A的实例么?:"+(a2 instanceof A)); System.out.println("a2是B的实例么?:"+(a2 instanceof B)); } }
输出结果:
a1是A的实例么?:true
a1是B的实例么?:false
------------------------
a2是A的实例么?:true
a2是B的实例么?:false
2.通过向下转型实例化:
class A { } class B extends A { } class C extends A{ } public class PolymorphismDemo2{ public static void main(String[] args) { fun(new B()); //调用fun()传入B实例 fun(new C()); //调用fun()传入C实例 } public static void fun(A a){ B b = (B) a; } }
传入两个实例,如果不加intanceof判断的话,会出错
所以需要加上instanceof判定,如下:
class A { } class B extends A { } class C extends A{ } public class PolymorphismDemo2{ public static void main(String[] args) { fun(new B()); //调用fun()传入B实例 fun(new C()); //调用fun()传入C实例 } public static void fun(A a){ if(a instanceof B){ B b = (B) a; } if(a instanceof C){ C c = (C) a; } } }最后通过一个例题来理解intanceof的用法:
interface A { } class B implements A { } class C extends B { } public class PolymorphismDemo { public static void main(String[] args) { A a = new B(); B b = new B(); C c = new C(); System.out.println("a是A的实例么?:"+(a instanceof A)); System.out.println("a是B的实例么?:"+(a instanceof B)); System.out.println("-----------------------------------"); System.out.println("b是C的实例么?:"+(b instanceof C)); System.out.println("b是B的实例么?:"+(b instanceof B)); System.out.println("b是A的实例么?:"+(b instanceof A)); System.out.println("-----------------------------------"); System.out.println("c是C的实例么?:"+(c instanceof C)); System.out.println("c是B的实例么?:"+(c instanceof B)); System.out.println("c是A的实例么?:"+(c instanceof A)); } }
输出结果:
a是A的实例么?:true
a是B的实例么?:true
-----------------------------------
b是C的实例么?:false
b是B的实例么?:true
b是A的实例么?:true
-----------------------------------
c是C的实例么?:true
c是B的实例么?:true
c是A的实例么?:true
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统