我是Java编程的初学者.目前我在this页面上阅读有关继承和等于方法的内容.

直到这一点,我理解这些解释:

Compare the classes of this and otherObject. If the semantics of

equals can change in subclasses, use the getClass test:

if (getClass() != otherObject.getClass()) return false;

If the same semantics holds for all subclasses, you can use an instanceof test:

if (!(otherObject instanceof ClassName)) return false;

我不明白“平等的语义”是什么意思.有人可以共享我们使用getClass()和instanceof的场景吗?

谢谢你的阅读.

解决方法:

简而言之,getClass()返回对象的直接类.例如,

class A { }

class B extends A { }

如果我们从A和B创建两个对象,

A objA = new A();

B objB = new B();

现在我们可以检查getClass是如何工作的

System.out.println(objA.getClass()); //Prints "class A"

System.out.println(objB.getClass()); //Prints "class B"

所以,

objA.getClass() == objB.getClass()

返回false.但

System.out.println(objB instanceof A); //Prints true

这是因为即使给出了提供的对象的超类,instanceof也会返回true.

因此,当您设计equals()方法时,如果要检查给定对象(otherObject)是否从同一个直接类实例化,请使用

if (getClass() != otherObject.getClass()) return false;

如果可以从您提供的Class(ClassName)的子类创建给定对象(otherObject),请使用

if (!(otherObject instanceof ClassName)) return false;

简单地说,“equals的语义”意味着“你期望从equals()方法的目的”.因此,您可以根据需要使用适当的方法.

标签:java,inheritance,equals

来源: https://codeday.me/bug/20190608/1197046.html

java equals getclass_Java equals()方法 – 子类中equals的语义如何确定getClass和instanceof的使用...相关推荐

  1. 信息: 解析 HTTP 请求 header 错误 java.lang.IllegalArgumentException: 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.

    信息: 解析 HTTP 请求 header 错误 Note: further occurrences of HTTP request parsing errors will be logged at ...

  2. java最终类最终方法_Java中,什么是最终类与最终方法?它们的作用是什么?

    final class A {},这样定义的类A就是最终类,最终类不可被继承,也就是说,不能写这样的代码,class B extends A {}了. final void B() {},这样定义的方 ...

  3. java定时执行某个方法_Java中定时执行任务的三种方法

    Java中定时执行任务的三种方法 1)java.util.Timer 这个方法应该是最常用的,不过这个方法需要手工启动你的任务: Timer timer=new Timer(); timer.sche ...

  4. java set 的使用方法_Java中Set的使用(转载)

    在Java中使用Set,可以方便地将需要的类型以集合类型保存在一个变量中.主要应用在显示列表.Set是一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e ...

  5. java单例模式的实现方法_Java中的五种单例模式实现方法

    Ext4 ComboBox组件使用 先来看例子: Ext.define('schoolModel', { extend: 'Ext.data.Model', fields: [{ name: 'id' ...

  6. java传参数的方法_java中方法的参数传递机制

    无论是什么语言,要讨论参数传递方式,就得从内存模型说起,主要是我个人觉得从内存模型来说参数传递更为直观一些.闲言少叙,下面我们就通过内存模型的方式来讨论一下Java中的参数传递. 这里的内存模型涉及到 ...

  7. Java反射在Main方法的中的而应用

    我们一直在学反射,反射到底是用来干什么的? 我一直也很迷糊.直到今天,终于搞清楚了. 打个比方,在JavaWeb中,如果我们想要通过用户提交的数据来决定具体调用哪个类来执行相应的功能. 没有接触到发射 ...

  8. java 调用枚举种方法_Java中枚举类型的一种使用方式

    今天改同事的代码发现同事的代码中有大量的if else语句.很不美观而且可读性太差. 因为需要给前端一个key,value的列表.这个列表写死.然而同事的代码. 放几张图,大家自己感受.我都不知道以后 ...

  9. java加密常用的方法_java中常用接口对接加密方式

    标签: hmac生成码 /** * * @param message 加密的内容 * @param secret 第三方接口提供的密钥 * @return */ private static Stri ...

最新文章

  1. hdu2852(2009多校第四场) 树状数组求区间第k大的数 两种方法
  2. 01_字符串处理-----05_相似性度量
  3. 用DataSet修改WebConfig
  4. 认识httphandler
  5. php实现返回界面,PHP实现模仿socket请求返回页面的方法
  6. 解决标签回车后产生的空格
  7. C++ 向函数传数组的方法
  8. 使用IDA 进行远程调试
  9. PHP在程序处理过程中动态输出内容
  10. Python的from import和import的区别
  11. 如何编译sqlite-3.5.9
  12. 权威媒体、专家对新书的推荐
  13. 图解十大经典机器学习算法
  14. 歌曲剪辑软件测试自学,想做vlog?想剪视频?全网最良心的视频剪辑软件测评之入门篇...
  15. 在线供应链系统服务方案:构建企业供应链平台业务、功能、技术管理架构
  16. 特教学校计算机课,北京特教学校引入编程课 计算机语言为听障孩子打开一扇智能之门...
  17. Portapack应用开发教程(十三)控制遥控小车OOK
  18. oracle 全文检索
  19. 怎么看虚拟网服务器ip地址,如何根据ip地址反查域名
  20. 一些常用的ubuntu软件安装方式

热门文章

  1. apexsql使用方法_使用ApexSQL审核执行SQL Server审核
  2. 删除不需要的(辅助)SQL Server事务日志文件
  3. spring boot2.0配置log4j2 发布到生成环境 报内存溢出异常 解决方案
  4. 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)
  5. js进阶 10-9 -of-type型子元素伪类选择器
  6. Error:Cannot find module 'stylus'
  7. Windows Azure系列公开课 - 第二课:为什么选择Windows Azure(下)
  8. CentOS_Oracle Enterprise Manager 11g 页面中文无法显示
  9. UITextView模拟UITextField 设置Placeholder属性 --董鑫
  10. C# DDOS攻击代码