在groovy中,當我更改克隆列表中的值時,原始值會被覆蓋。有誰知道如果我做錯了,或者它是一箇舊的Groovy錯誤?列表的克隆仍然糾正原始列表
我做這樣的事情:
List<Foo> myFooList = fooList.newFoos.findAll { it.type == "Types}
List<Foo> newFoo = fooList.oldFoos.findAll { it.type == "Types}.clone()
newFoo.each {
it.value = "neeeew value"
}
Foo fooOne = newFoo.each { foooo ->
fooTwo = fooList.oldFoos.find { it.id == foooo.id}
if(fooTwo.value != foooo.value) {
//Here it should go... but it turns out that fooTwo.value == foooo.value
}
}
這個克隆的名單,而不是' Foo'。你需要做一個'... collect {new Foo(it.properties)}'(或類似的東西)而不是'clone' – cfrick
你需要迭代這些項目並逐個克隆它們。爲了達到這個目的,你必須讓你的Foo類實現Cloneable接口和clone()方法。 – Piyush
@cfrick他正在比較foo對象的基本屬性;儘管對象引用不相等,但它們的基本屬性是相等的。 – dsharew