java中instanceof和getClass()的区别分析

 更新时间:2013年04月26日 16:54:13   作者:  
本篇文章介绍了,在java中instanceof和getClass()的区别分析。需要的朋友参考下

class A { } 

class B extends A { } 

Object o1 = new A(); 
Object o2 = new B(); 

o1 instanceof A => true 
o1 instanceof B => false 
o2 instanceof A => true // <================ HERE 
o2 instanceof B => true 

o1.getClass().equals(A.class) => true 
o1.getClass().equals(B.class) => false 
o2.getClass().equals(A.class) => false // <===============HERE 
o2.getClass().equals(B.class) => true 


getClass() will be useful when you want to make sure your instance is NOT a subclass of the class you are comparing with.

一个非常完美的equals方法的写法:

复制代码 代码如下:

   public boolean equals(Object otherObject)
   {
      // a quick test to see if the objects are identical
      if (this == otherObject) return true;

      // must return false if the explicit parameter is null
      if (otherObject == null) return false;

      // if the classes don't match, they can't be equal
      if (getClass() != otherObject.getClass()) return false;

      // now we know otherObject is a non-null Employee
      Employee other = (Employee) otherObject;

      // test whether the fields have identical values
      return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
   }

相关文章

  • SpringBoot实现接口版本控制的示例代码

    SpringBoot实现接口版本控制的示例代码

    这篇文章主要介绍了springboot如何实现接口版本控制,接口版本控制,比如微服务请求中某个接口需要升级,正常做法是升级我们的版本,文中有详细的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2024-03-03
  • Springcloud-nacos实现配置和注册中心的方法

    Springcloud-nacos实现配置和注册中心的方法

    这篇文章主要介绍了Springcloud-nacos实现配置和注册中心的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Java多线程之Worker Thread模式

    Java多线程之Worker Thread模式

    这篇文章主要介绍了Java多线程之Worker Thread模式,Worker的意思是工作的人,在Worker Thread模式中,工人线程Worker thread会逐个取回工作并进行处理,当所有工作全部完成后,工人线程会等待新的工作到来,下面文章小编回给大家详细介绍,需要的朋友可以参考一下
    2021-10-10
  • Java的垃圾回收机制实例分析

    Java的垃圾回收机制实例分析

    这篇文章主要介绍了Java的垃圾回收机制,结合实例形式分析了垃圾回收机制的原理及相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • Spring Boot构建系统安全层的步骤

    Spring Boot构建系统安全层的步骤

    这篇文章主要介绍了Spring Boot构建系统安全层的步骤,帮助大家更好的理解和学习使用Spring Boot框架,感兴趣的朋友可以了解下
    2021-04-04
  • Java 实战项目之家居购物商城系统详解流程

    Java 实战项目之家居购物商城系统详解流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java实现一个家居购物商城系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • 快速了解Java中ThreadLocal类

    快速了解Java中ThreadLocal类

    这篇文章主要介绍了快速了解Java中ThreadLocal类,介绍了ThreadLocal 是什么,ThreadLocal的作用,ThreadLocal 原理等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 解决java 命令行乱码的问题

    解决java 命令行乱码的问题

    这篇文章主要介绍了解决java 命令行乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java设计模式之观察者模式(Observer模式)介绍

    Java设计模式之观察者模式(Observer模式)介绍

    这篇文章主要介绍了Java设计模式之观察者模式(Observer模式)介绍,Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解,需要的朋友可以参考下
    2015-03-03
  • Mybatis逆向工程实现连接MySQL数据库

    Mybatis逆向工程实现连接MySQL数据库

    本文主要介绍了Mybatis逆向工程实现连接MySQL数据库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06

最新评论