我正在使用SparseIntArray,对此行为感到困惑:

public static SparseIntArray getArray()

{

SparseIntArray result = new SparseIntArray();

result.append(0, 99);

result.append(1, 988);

result.append(2, 636);

return result;

}

public static void testArray()

{

SparseIntArray first = getArray();

SparseIntArray second = getArray();

if( first.equals(second) )

{

Log.v(TAG,"first "+first.toString()+" == second "+second.toString());

}

else

{

Log.v(TAG,"first "+first.toString()+" != second "+second.toString());

}

}

输出:

11-06 14:53:15.011: V/fileName(6709): first {0=99, 1=988, 2=636} != second {0=99, 1=988, 2=636}

我知道在两个对象之间使用==会比较对象地址,在这种情况下,它们是不同的,但是在这里我使用SparseIntArray.equals(Object other)并且预期的结果并不意外.

我确定我可以使用自己的比较方法,但这听起来有些愚蠢.如果我们不能依赖基类Object.equals(Object other)方法又有什么意义呢?

有人可以指出任何错误吗?

解决方法:

我只是搜索SparseIntArray的代码.如果您指的是android.util.SparseIntArray,则它不会覆盖equals,这意味着它使用Object类的默认实现来比较引用.

What is the point for having a base class Object.equals(Object other) method if we cant rely on it?

实际上,您不能依赖基类Object.equals,因为它恰好可以执行您不想执行的操作:

public boolean equals(Object obj)

{

return (this == obj);

}

任何类的编写者都可以决定是否重写等式并给出不同的实现.

标签:equals,sparse-array,java,android

来源: https://codeday.me/bug/20191029/1956520.html

object+java+equals_java-为什么SparseIntArray.equals(Object)不起作用?相关推荐

  1. java == equals_java中==与equals

    == ==可用于比较基本类型与引用类型,对于基本类型变量比较的是其存储的值是否相等,对于引用类型则比较的是其是否指向同一个对象. 如: int a = 10; int b = 20; double d ...

  2. java之进阶语法(Object类及日期时间类)

    一.关于Object类 (一)概述 java.lang.object类是java语言的根类,即是所有类的父类. 若一个类没有指定父类,那么默认继承自Object类 object类常用的方法有以下: - ...

  3. 关于equals的Java代码_与equals方法相关的Java代码

    t3.equals(t3)是唯一具有与方法签名public boolean equals (Test testje)匹配的正确参数的行,因此它是程序中唯一实际调用该print语句的行. 这个问题旨在教 ...

  4. java中Object类的hashCode和equals及toString方法。

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  5. (JAVA)Object类之toString()和equals()

    Object类:存储于java.lang包中,有构造方法,无super 一.toString():返回该对象的字符串表示-----String类型,输出类型中,默认调用toString()1.publ ...

  6. JAVA进阶教学之(Object类中的equals方法)

    public boolean equals(Object obj){return (this == obj); } 原始equals方法是判断两个对象的内存地址是否相等的(内存地址相等,保存的值也相等 ...

  7. JAVA入门级教学之(Object类中的equals方法)

    package com.lbj.javase18; /**  * 关于Object中的equals方法:  *   * Object中的equals方法(核心):  *  public boolean ...

  8. Java基础---API概述---常用类(Object类/String类)---equals和==

    API概述 API:application programming interface,应用程序编程接口 用于规定方法名称的规则集合,定义了方法的修饰符.返回值类型.方法的名称.方法的参数列表.方法的 ...

  9. 解析equals(Object obj)和compareTo(T obj)

    背景:最近在研究静态扫描的东西,遇到一个规则:"equals(Object obj)" should be overridden along with the "comp ...

最新文章

  1. 点击菜单选项,右侧主体区新增子界面(Tab)的实现
  2. Tuxera NTFS 2020.2 for Mac 磁盘格式读写
  3. 医疗保健行业未来发展的5大趋势预测
  4. 如何用cool edit剪辑拼接音频文件
  5. 【云游戏】云游戏的架构设计和技术实现
  6. 物联网技术:射频识别技术RFID解析
  7. 做煎饼果子的N种方式——From Sequential to Reactive
  8. 常用设计模式——装饰者模式
  9. JSP基本语法、3个编译指令、7个动作指令、9个内置对象
  10. 第28届计算机命题搜索赛试题,第28届计算机表演赛命题搜索赛.docx
  11. 梁静茹晒巨肚孕照引惊叹 被疑怀双胞胎
  12. 最新干货get,手机相机项目的整体测试流程是怎样的?
  13. 凯撒密码加密解密C语言详细代码
  14. 使用HTML设计网页
  15. Golang(go语言)的框架
  16. 简单一道数学题 剿灭100%垃圾邮件
  17. Day18-用vim写猜词游戏
  18. 别眨眼!AI通过自学秒解魔方,比人类纪录快两倍
  19. 小白智能摄像头户外云台版N1:一款懂人性的摄像头
  20. 论文阅读:Synthesizing Obama: Learning Lip Sync from Audio

热门文章

  1. python reshape transpose
  2. python DbUtils 使用教程
  3. 【2】青龙面板入门系列教程之宝塔面板的安装以及docker的安装
  4. linux启动运行级别上机,linux的启动及其运行级别
  5. blur失焦方法会触发两次_中央空调维修过程中,晶闸管和电容器的检测方法
  6. 无缝衔接的人会遭报应吗_还为幼小衔接发愁吗?学会4招,孩子养成好习惯,与小学无缝对接...
  7. java文件分割合并_java实现文件分割与合并 类示例源码
  8. 内嵌资源html,内嵌元素(HTML)
  9. oracle x6-2能装2008吗,Sun服务器电源Oracle Server X6-2原装拆机7079395 600 AC
  10. keil5函数 默认返回值_C++的返回值return