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

相关推荐
钟离墨笺3 分钟前
Go 语言-->指针
开发语言·后端·golang
就叫飞六吧4 分钟前
mysql全量备份、全量恢复demo
android·mysql·adb
PenguinLetsGo33 分钟前
关于 Android16 MOPS 函数指令非法问题
android
超浪的晨34 分钟前
Java 代理机制详解:从静态代理到动态代理,彻底掌握代理模式的原理与实战
java·开发语言·后端·学习·代理模式·个人开发
咖啡の猫1 小时前
bash的特性-bash中的引号
开发语言·chrome·bash
java叶新东老师1 小时前
idea提交时忽略.class、.iml文件和文件夹或目录的方法
java·开发语言
走过,莫回头1 小时前
在OpenMP中,#pragma omp的使用
开发语言·openmp
Warren981 小时前
Java Collections工具类
java·开发语言·笔记·python·学习·oracle·硬件工程
工程师0072 小时前
C#多线程,同步与异步详解
开发语言·c#·多线程·同步·异步编程
xzkyd outpaper2 小时前
Kotlin中Flow
android·开发语言·kotlin