java - Which strategy to use? Object Clone or a simple Map -
i need something. code of following template. assume customobject has multiple property1, property2, ..property100.
list<customobject> customobjectlist = /*<method call external api returns said list >*/ if(customobjectlist != null && customobjectlist.size() > 0){ //*** point ***<clone object> resultlist = <some method process above list>(customobjectlist) if(resultlist.size() > 0){ for(iterator<map.entry<customobject, externalresponse>> itr = resultlist.entryset().iterator(); itr.hasnext();) { //code modifies properties in customobjects //*** point b ***resetaproperty(<object clone>) } } } at point b, need 1 unmodified specific property of original object use in method. have 2 strategies this:
- clone object @ point a, , use cloned copy property shown in above code. @ point a, use loop , a
- map form associate array of object names, property original values , traverse them property initial value @ point b
avoid cloning because requires deep cloning
.clone() on list end in tears because have deep clone objects in list, referenced objects, , on.
deep cloning means have make binary copy of every last object in object graph. copying reference give shallow copy , see changes made referenced object. miss 1 property , have hell of time finding bug.
solution
what should make customobject instances immutable , don't need worry versioning, can never change, mutation involve creating new instance immutable , complete different object. never had worry versions.
of course instance variables point other objects need immutable well. same problem deep clone taking angle. more manageable angle.
Comments
Post a Comment