Java instanceof和getClass()区别实例解析

 更新时间:2020年07月29日 09:18:36   作者:htj10  
这篇文章主要介绍了Java instanceof和getClass()区别实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

对象 instanceof 类名,表示 对象是类名的实例,或者是其子类的实例,返回 true,否则返回 false。

对象.getClass() == 类名.class ,表示 只有对象是该类的实例,才返回 true

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.

例子:

class Base{
  
}
class Derived extends Base{
  
}

public class Hello {
  public static void main(String[] args) throws ParseException {
    Derived d = new Derived();
    boolean bRet;
    bRet = d instanceof Derived;//true
    bRet = d instanceof Base;//true
    bRet = d.getClass() == Derived.class;//true
//   bRet = d.getClass() == Base.class;// 出错
    bRet = d.getClass().equals(Base.class);//false
  }
}

使用,重写equals

class Person{
  private String id;
  private String name;
  //重写equals()方法,提供自定义的相等标准
  public boolean equals(Object obj){
    if(this == obj)//若为同一个对象
      return true;
    //只有当obj是Person对象
    if(null != obj && obj.getClass() == Person.class){
      Person p = (Person)obj;
      if(id.equals(obj).getId() && ...){
        return true;
      }
    }
    return false;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java获取当前时间年月日的方法

    Java获取当前时间年月日的方法

    这篇文章主要为大家详细介绍了Java获取当前时间年月日的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Spring RedisTemplate 批量获取值的2种方式小结

    Spring RedisTemplate 批量获取值的2种方式小结

    这篇文章主要介绍了Spring RedisTemplate 批量获取值的2种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java实现将CSV转为Excel的示例代码

    Java实现将CSV转为Excel的示例代码

    CSV(Comma Separated Values)文件是一种纯文本文件,包含用逗号分隔的数据,常用于将数据从一个应用程序导入或导出到另一个应用程序。本文将利用Java实现CSV转为Excel,感兴趣的可以了解一下
    2022-03-03
  • Java实现两人五子棋游戏(六) 行棋方变换

    Java实现两人五子棋游戏(六) 行棋方变换

    这篇文章主要为大家详细介绍了Java实现一个简单的两人五子棋游戏,行棋方变换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Java手把手必会的实例汉诺塔讲解练习

    Java手把手必会的实例汉诺塔讲解练习

    汉诺塔,传说神在创造世界的时候做了三根金刚石柱子,并在一个教塔里留下了三根金刚石棒,第一根上面从上到下套着64个按从小到大排列的金盘,神命令庙里的众僧将它们一个个地从这根金刚石棒搬到另一根金刚石棒上,大盘不能放在小盘上。最后64个金盘仍然要按从小到大排列
    2021-09-09
  • springboot配置加密的正确姿势分享

    springboot配置加密的正确姿势分享

    在Spring boot开发中,需要在application.yml文件里配置数据库的连接信息,或者在启动时传入数据库密码,如果不加密,传明文,数据库就直接暴露了,下面这篇文章主要给大家介绍了关于springboot配置加密的正确姿势,需要的朋友可以参考下
    2022-11-11
  • 设置JavaScript自动提示-Eclipse/MyEclipse

    设置JavaScript自动提示-Eclipse/MyEclipse

    自动提示需要2个组件,分别是:ext-4.0.2a.jsb2||spket-1.6.16.jar,需要的朋友可以参考下
    2016-05-05
  • Java中字符串常见的一些拼接方式总结

    Java中字符串常见的一些拼接方式总结

    字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起,下面这篇文章主要给大家总结介绍了关于Java中字符串常见的一些拼接方式,需要的朋友可以参考下
    2023-04-04
  • 简单捋捋@RequestParam 和 @RequestBody的使用

    简单捋捋@RequestParam 和 @RequestBody的使用

    这篇文章主要介绍了简单捋捋@RequestParam 和 @RequestBody的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • SpringBoot接收接口入参的方式小结

    SpringBoot接收接口入参的方式小结

    这篇文章主要给大家介绍了SpringBoot接收接口入参的几种方式,我们从调用方的视角去看待这个问题,对调用方来说,它在调用接口时有好几种传参方式,下面,将会依次对这几种参数方式进行讲解和代码示例,需要的朋友可以参考下
    2024-01-01

最新评论