• instanceof的用法②


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

    你可能需要判断这个引用真正指向的类。所以你需要从该类继承树的最底层开始,使用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的右操作数。

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

    ---- 动动手指关注我!或许下次你又能在我这里找到你需要的答案!ZZZZW与你一起学习,一起进步!
  • 相关阅读:
    用JAVA发送一个XML格式的HTTP请求
    LR 测试http协议xml格式数据接口
    软件测试术语
    linux学习笔记
    接口测试文章整理
    InputStream只能读取一次的解决办法 C# byte[] 和Stream转换
    zTree更新自定义标签>>>
    C# 各类常见Exception 异常信息
    C# 调用存储过程 Sql Server存储过程 存储过程报错,程序中的try
    SQL Server 2014 清除用户名和密码
  • 原文地址:https://www.cnblogs.com/zzzzw/p/4945869.html
Copyright © 2020-2023  润新知