I am trying the following code where I want to make a deep copy of main object and make changes in the new created object person1. But the change get reflected in both the object. So as result main object should remain same and new created object's state should be null. And also synchronized blocks are used.
class Person {
public void persist() {
print(this.toString()); //print whole object
Person person1 = new Person ();
person1.setName(this.getName());
person1.setAddress(this.getAddress());
for(Address address : person1.getAddress()) {
address.setState(null);
}
print(person1.toString()); //printobject with state as null
print(this.toString()); // print object with state as null(ERROR)
}
}