首页 > 其他 > 详细

instanceof的用法②

时间:2015-11-07 20:19:50      阅读:214      评论:0      收藏:0      [点我收藏+]

其实这个问题以前也困扰过我。我个人理解的一个应用场合就是,当你拿到一个对象的引用时(例如参数),

你可能需要判断这个引用真正指向的类。所以你需要从该类继承树的最底层开始,使用instanceof操作符判断,

第一个结果为true的类即为引用真正指向的类。

例如下面的例子:

 1 class Person{}
 2 class Student extends Person{}
 3 class Postgraduate extends Student{}
 4 class Animal{} 
 5 public class InstanceofTester {
 6  public static void main(String[] args) {
 7   instanceofTest(new Student());
 8  }
 9  public static void instanceofTest(Person p){
10   // 判断p的真正类型
11   if (p instanceof Postgraduate){
12    System.out.println("p是类Postgraduate的实例");
13   } else if(p instanceof Student){
14    System.out.println("p是类Student的实例");
15   } else if(p instanceof Person){
16    System.out.println("p是类Person的实例");
17   } else if(p instanceof Object) {
18    System.out.println("p是类Object的实例");
19   }
20   /*if(p instanceof Animal){//此错编译错误,所以做注释
21    System.out.println("p是类Animal的实例");
22   }*/
23  }
24 }

这个程序的输出结果是:p是类Student的实例

Person类所在的继承树是:Object<--Person<--Student<--Postgraduate。

这个例子中还加入一个Animal类,它不是在Person类的继承树中,所以不能作为instanceof的右操作数。

你可以跑跑程序,应该就明白什么意思了。

instanceof的用法②

原文:http://www.cnblogs.com/zzzzw/p/4945869.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!