当前位置: 首页 > news >正文

kotlin 数据类的get和set 问题

平台声明冲突问题分析与解决

错误信息

e: file:///Users/AndroidStudioProjects/android_workSpace/AAA-app/modules/mod_common/src/main/java/com/robot/mod_common/beans/mqtt_command/MarkerBean.kt:141:5 Platform declaration clash: The following declarations have the same JVM signature (getName()Ljava/lang/String;):
fun `<get-name>`(): String? defined in com.robot.mod_common.beans.mqtt_command.MarkerData
fun getName(): String defined in com.robot.mod_common.beans.mqtt_command.MarkerData

问题代码

/*** 标记点数据类* * 字段说明:* - 插入操作: 需要 name 和 type* - 删除操作: 只需要 name  * - 查询操作: 可为空*/
data class MarkerData(@SerializedName("name")val name: String? = null,@SerializedName("type")val type: String? = null
) {/*** 检查是否为有效标记点(有名称)*/fun isValid(): Boolean {return !name.isNullOrEmpty()}/*** 检查是否有类型信息  */fun hasType(): Boolean {return !type.isNullOrEmpty()}/*** 获取类型描述*/fun getTypeDescription(): String {return when (type) {"0" -> "普通标记点""1" -> "重要标记点""2" -> "危险标记点"null -> "未设置类型"else -> "未知类型"}}// 以下方法导致冲突fun getName(): String {return name ?: ""}fun getType(): String {return type ?: ""}
}

问题分析

  1. 冲突原因:

    • Kotlin 属性 nametype 会自动生成 getter 方法 getName()getType()
    • 同时手动定义了同名方法 getName()getType()
    • 导致 JVM 层面方法签名冲突
  2. 解决方案:

    • 删除手动定义的 getName()getType() 方法
    • 直接使用属性访问配合 Elvis 操作符

修复方案

删除冲突方法:

// 删除这两个方法
fun getName(): String {return name ?: ""
}fun getType(): String {return type ?: ""
}

更新调用方式:

// 原调用方式
data?.getName()// 改为
data?.name ?: ""

修改 MarkerBean 中的辅助方法:

/*** 获取标记点名称*/
fun getMarkerName(): String {return data?.name ?: ""
}/*** 获取标记点类型  */
fun getMarkerType(): String {return data?.type ?: ""
}

修复验证

✅ 已删除冲突方法
✅ 更新了所有相关调用
✅ 验证无其他依赖
✅ 确认无 lint 错误

现在可以直接使用 markerData.namemarkerData.name ?: "" 安全访问属性。

http://www.dtcms.com/a/523574.html

相关文章:

  • 爱站网功能左旗网站建设
  • 中国企业跨境云组网指南:低延迟访问德国AWS云做数据分析的实操方案
  • 从单机阅读到云端协作:KoodoReader+cpolar构建知识管理新范式
  • 设计模式之:命令模式
  • EulerOS(NPU)安装llamafactory
  • Ubuntu卸载snap
  • STP(生成树协议)与 RSTP(快速生成树协议)核心知识
  • 数据结构:顺序表讲解(2)
  • 建设一个网站需要考虑什么海口h5公司
  • 高端广告公司网站建设wordpress插件 stock
  • 第二章、全局配置项目主题色(主题切换+跟随系统)
  • 彻底清理:Vue项目中移除static文件夹的完整指南
  • 【Linux网络】套接字Socket编程预备
  • day18_菜单查询 合并servlet
  • 算法总结篇(枚举-分治)
  • TCP pure ACK 的不可扩展性问题
  • Android16 Wifi打开到自动连接的主要日志过程分析介绍
  • 背包dp——动态规划
  • 找做柜子的网站中国芯片制造最新消息
  • 甘肃省临夏州建设局网站wordpress 未分类
  • 用 Excalidraw+cpolar 做会议协作,像素级还原实体白板体验
  • 使用C++开发Android .so库的优势与实践指南
  • Spring AOP:注解配置与XML配置双实战
  • 基于YOLO11深度学习的半导体晶圆外观缺陷检测系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
  • 笔记本电脑待机、睡眠与休眠模式的技术差异解析
  • 2025丨时间很快,又来到1024
  • 基于python人脸识别系统 人脸检测 实时检测 深度学习 Dlib库 ResNet深度卷积神经网络 pyqt设计 大数据(源码)✅
  • 【C + +】unordered_set 和 unordered_map 的用法、区别、性能全解析
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程)
  • 电子商城网站建设与维护怎么建设淘客自己的网站_