kotlin Java 使用ArrayList.add() ,set()前面所有值被 覆盖 的问题

一、问题描述和分析

结构体的字段的属性为静态, 意味着该类的所有对象共享同一个属性,所以尽管集合里存的是不同的对象,但是对象的属性还是同一个值 修改其中任何一个,其他的也会"被修改"。使用kotlin语言时候,经常方便写,直接写字段,没有写构造函数。就会容易出现此问题。

所以需要写上构造函数,然后重新new 一个对象,防止被修改。

复制代码
class SurveyBean {

    var n: Double = 0.0 //X(N)坐标
    var e: Double = 0.0 //Y(E)坐标
    var z: Double = 0.0 //Z(Z)坐标
    constructor(n: Double, e: Double, z: Double) {
        this.n = n
        this.e = e
        this.z = z
    }
    constructor()

}

二、解决办法

所以add或者set时候,重新new 一个结构体对象进行添加就可以解决。

复制代码
surveyBeanList.add(SurveyBean(it.n,it.e,it.z))

以上代码都是kotlin写法。

相关推荐
Data_agent6 小时前
Python 编程实战:函数与模块化编程及内置模块探索
开发语言·python
new_zhou6 小时前
vs2019+qt工程中生成dump文件及调试
开发语言·qt·visual studio·dump调试
栈与堆6 小时前
LeetCode 19 - 删除链表的倒数第N个节点
java·开发语言·数据结构·python·算法·leetcode·链表
一路向北·重庆分伦6 小时前
03-01:MQ常见问题梳理
java·开发语言
txinyu的博客6 小时前
结合游戏场景理解,互斥锁,读写锁,自旋锁,CAS / 原子变量,分段锁
开发语言·c++·游戏
YIN_尹7 小时前
【MySQL】数据类型(上)
android·mysql·adb
阿里嘎多学长7 小时前
2026-01-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
yuanyikangkang7 小时前
STM32 lin控制盒
开发语言
txinyu的博客7 小时前
HTTP服务实现用户级窗口限流
开发语言·c++·分布式·网络协议·http