zoukankan      html  css  js  c++  java
  • java中instanceof和getClass()的作用

    初学者难免有点混淆java中instanceof和getClass()的作用,  下面就来一一讲解。

       父类A:

    class A { }
         子类B:
    class B extends A { }  
         构造对象
    Object o1 = new A(); 
    Object o2 = new B();

    一、instanceof


        演示一:
    1、o1 instanceof A => true  
    2、o1 instanceof B => false 
    3、o2 instanceof A => true // <================ HERE 
    4、o2 instanceof B => true

    分析==>

    用法:
            英文:result = object instanceof class

            中文:结果 = 某个实例对象  instanceof   某个类名

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

    总结:
                       S(Object) instanceof T(Class)
        简单来说,instanceof就是判断对象S是否是T类的实例,或者是T类的子类实例。

    二、getclass


        演示二:
    1、o1.getClass().equals(A.class) => true 
    2、o1.getClass().equals(B.class) => false
    3、o2.getClass().equals(A.class) => false // <===============HERE
    4、o2.getClass().equals(B.class) => true 
    分析==>
    getClass方法在JDK1.8中定义如下:
    /**
    *    Returns the runtime class of this Object
    */
    public final native Class<?>  getClass();
    功能:
         返回在运行时期对象的类。
    getClass() will be useful when you want to make sure your instance is NOT a subclass of the class you are comparing with.
     

    三、instanceof与getclass的运用

    1、区别:
    • instanceof: 主要用来判断  对象与类之间的关系。
    • getclass: 获取运行时期对象的类。
    2、运用:
          假设目前有父亲、孩子两个角色 
    场景一:
        参加父亲朋友公司开业活动
          此时,父亲本人可以亲自参加;
          如果父亲当天正在外地出差,此时他的孩子可以替其参加。
    当父类与子类都可以通过时,则使用instanceof
     
    场景二:
        父亲带孩子去游乐场玩,游乐场规定,一些小型游戏场地,只允许孩子进入,父亲只能在门外观看。
    当限定到具体某一类时,则使用getclass+equals搭配
     
    参考:
  • 相关阅读:
    django-form表单
    django-登录页面添加验证码
    opensatck误删除service项目
    运维脚本
    大数据平台架构组件选择与运用场景
    HDP2.4安装(五):集群及组件安装
    Spark(三): 安装与配置
    Spark(二): 内存管理
    Spark(一): 基本架构及原理
    ElasticSearch基本使用
  • 原文地址:https://www.cnblogs.com/aoguren/p/4822380.html
Copyright © 2011-2022 走看看