Kotlin Data包含ByteArray类型

在 Kotlin 中,当数据类(data class)包含 ByteArray 类型参数时,需特别注意 数组内容的比较自动生成方法的行为 以及 内存管理。以下是关键注意事项和解决方案:

  • 核心问题:数据类自动生成的 equals() 和 hashCode() 方法会使用 ByteArray 的引用地址(而非内容)进行比较
  • 手动重写数据类方法
    需显式重写 equals()、hashCode() 和 toString(),确保基于 ByteArray 内容进行比较:
kotlin 复制代码
data class ImageData(val data: ByteArray) {
    // 重写 equals:比较 ByteArray 内容
    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (javaClass != other?.javaClass) return false
        other as ImageData
        return data.contentEquals(other.data) // 使用 contentEquals 比较数组内容
    }

    // 重写 hashCode:基于数组内容生成
    override fun hashCode(): Int {
        return data.contentHashCode() // 使用 contentHashCode
    }

    // 重写 toString:输出可读内容
    override fun toString(): String {
        return "ImageData(data=${data.contentToString()})" // 使用 contentToString
    }
}
相关推荐
Meteors.16 分钟前
Android 性能优化:08.耗电优化
android·性能优化
萧瑟余晖24 分钟前
Java深入解析篇十三之Java日志API(JUL)详解
java·开发语言
Kapaseker42 分钟前
Compose SelectionState API — 主动控制文本选择
android·kotlin
luj_17681 小时前
毒素驱动的生物自毁机制探析
服务器·c语言·开发语言·经验分享·算法
海兰1 小时前
【 Python 量化交易】第6章:数据可视化
开发语言·python·信息可视化
多多鼠1 小时前
Tool Calling的信任边界:从协议校验到执行沙箱的完整链路设计
运维·开发语言·网络·人工智能·python·langchain
啊阿狸不会拉杆1 小时前
《计算机网络-自顶向下方法》1.5 协议层次及其服务模型 读书笔记
开发语言·计算机网络·php
tryxr1 小时前
Chat2Excel 项目通用服务开发
java·开发语言·excel·java项目开发
Jazz_z1 小时前
使用 Python 合并与取消合并 Excel 单元格
开发语言·python·excel