主页 > 游戏开发  > 

kotlinJava使用ArrayList.add(),set()前面所有值被覆盖的问题

kotlinJava使用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写法。

标签:

kotlinJava使用ArrayList.add(),set()前面所有值被覆盖的问题由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“kotlinJava使用ArrayList.add(),set()前面所有值被覆盖的问题