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

相关推荐
zhangpeng4555479401 分钟前
C++--综合应用-演讲比赛项目
开发语言·c++·算法
火兮明兮10 分钟前
Python训练第三十天
开发语言·python
啊我不会诶13 分钟前
CF每日4题(1300-1400)
开发语言·c++·算法
学编程的小白狼27 分钟前
C#:多线程
开发语言·c#
island131427 分钟前
JAVA Web 期末速成
java·开发语言·前端
珊瑚里的鱼32 分钟前
【滑动窗口】LeetCode 1004题解 | 最大连续1的个数 Ⅲ
开发语言·c++·笔记·算法·leetcode
使者大牙33 分钟前
【C语言基础语法入门】通过简单实例快速掌握C语言核心概念
c语言·开发语言
2401_895610821 小时前
Java 后端基础 Maven
java·开发语言·maven
LAM LAB1 小时前
【VBA/word】批量替换字体大小
开发语言·c#·word
CYRUS STUDIO1 小时前
FART 主动调用组件设计和源码分析
android·逆向·源码分析·fart·脱壳