【发布时间】:2019-11-08 12:18:49
【问题描述】:
我有 3 个课程如下:
Company.kt 类:
data class Company(var comCode:String= "",var comName:String=""):Cloneable{
fun copy() : Company {
//uses the fields name and property defined in the constructor
return Company(comCode,comName)
}
override fun clone(){
super.clone()
}
}
Emp.kt 类:
data class Emp(var name:String,var empCode:String,var nameArray:MutableList<Company>){
fun copy() : Emp {
//uses the fields name and property defined in the constructor
return Emp(name,empCode,nameArray)
}
//or if you need a copy with a changed field
fun copy(changeArray :MutableList<Company>) : Emp {
return Emp(name,empCode ,changeArray)
}
}
DeepCopy.kt 类:
fun main(args:Array<String>){
var company1 = Company("com1","company1")
var company2 = Company("com2","company2")
var company3 = Company("com3","company3")
var company4 = Company("com4","company4")
var company5 = Company("com5","company5")
var list:MutableList<Company> =mutableListOf();
list.add(company1)
list.add(company2)
list.add(company3)
list.add(company4)
list.add(company5)
val emp = Emp("krishan","oms360",list)
println("old emp>>>>>>> "+emp.nameArray[1].comCode)
val listtemp = emp.nameArray
listtemp[1].comCode= "COM10";
//var cloneEmp = emp.copy(listtemp)//.apply { this.nameArray[1].comCode= "COM10"; }
//cloneEmp.nameArray[1].comCode= "COM10";
//cloneEmp.empCode = "oms400"
println("new emp>>>>>>> "+emp.nameArray[1].comCode)
}
当我从像这样的新对象中的 emp 对象中获得 nameArray 时
val listtemp = emp.nameArray
listtemp[1].comCode= "COM10";
并更改列表第一个位置的值,在该 print emp 对象之后,该对象 print changes()。
结果:
old emp>>>>>>> com2
new emp>>>>>>> COM10
【问题讨论】:
-
Emp 对象不应更改。请建议
-
你正在编辑
emp对象的数组,为什么它不会改变?你永远不会复制数组。 -
@pawal 先生。我要复制数组,怎么可能?
-
请给出一些更新代码提示
标签: java android kotlin jetbrains-ide