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写法。

相关推荐
初心未改HD4 分钟前
Go语言测试与Benchmark:测试驱动开发的实践指南
开发语言·golang
chxii11 分钟前
lua流程控制语句和table(表)数据结构
开发语言·junit·lua
逻辑驱动的ken19 分钟前
Java高频面试考点场景题20
java·开发语言·深度学习·面试·职场和发展
W.A委员会20 分钟前
多行溢出在末尾添加省略号
开发语言·javascript·css
wjs202422 分钟前
RSS Item 元素:深入解析与使用指南
开发语言
小郑加油25 分钟前
python学习Day11:认识与创建CSV文件
开发语言·python·学习
念何架构之路1 小时前
Go Web基础和Http演进
开发语言·后端·golang
初心未改HD1 小时前
Go语言database/sql与SQLx:构建健壮的数据访问层
开发语言·golang
晚风吹红霞1 小时前
C++异常处理核心知识点全解析
开发语言·c++
CoderCodingNo1 小时前
【信奥业余科普】C++ 的奇妙之旅 | 17:面的铺展与文本的本质——二维数组与字符串
开发语言·c++