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

相关推荐
lzhdim3 小时前
C# 中读取CPU、硬盘和内存温度
开发语言·c#
Irene19913 小时前
Oracle PL/SQL Developer 版本差异(11g、14)实战总结
java·开发语言
qq_448011164 小时前
C语言中的getchar()
c语言·开发语言
肖志-AI全栈4 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
开发语言·javascript·排序算法
野生风长4 小时前
c++类和对象(this指针,重载operator,习题总结)
java·开发语言·c++
恋猫de小郭4 小时前
Flutter 3D 渲染的全新选择和应用场景
android·前端·flutter
雪的季节4 小时前
Python「假多态」与 C++「真多态」的核心区别
开发语言·c++
—Miss. Z—4 小时前
计算机二级MySQL——简单应用题(事件&视图)
android·mysql·adb
zmzb01034 小时前
C++课后习题训练记录Day166
开发语言·c++
皓月斯语5 小时前
程序设计语言的特点
开发语言·数据结构·c++