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

相关推荐
正在走向自律1 分钟前
Ubuntu系统下Python连接国产KingbaseES数据库实现增删改查
开发语言·数据库·python·ubuntu·kingbasees·ksycopg2
草莓熊Lotso2 分钟前
PyCharm 从入门到高效:安装教程 + 快捷键速查表
开发语言·ide·经验分享·笔记·其他
Android-Flutter24 分钟前
kotlin - 平板分屏,左右拖动,2个Activity计算宽度,使用ActivityOptions、Rect(三)
android·kotlin
序属秋秋秋25 分钟前
《C++进阶之STL》【set/map 使用介绍】
开发语言·c++·笔记·leetcode·stl·set·map
澡点睡觉41 分钟前
【golang长途旅行第38站】工厂模式
开发语言·后端·golang
zfxwasaboy42 分钟前
linux Kbuild详解关于fixdep、Q、quiet、escsq
android·linux·ubuntu
Dxy123931021643 分钟前
Dockerfile文件常用配置详解
开发语言·docker
MATLAB代码顾问1 小时前
MATLAB可以实现的各种智能算法
开发语言·matlab
Mr YiRan1 小时前
Android模拟简单的网络请求框架Retrofit实现
android·retrofit
王伯安呢1 小时前
Java开发环境配置入门指南
java·开发语言·jvm·eclipse·环境搭建·新手