Kopiere objekt
Hej Jeg har et objekt jeg gerne vbil kopiere.Objektet indeholder en masser variabler (med tlhørende get'er og set'er metoder( dog ikke vist i kodeudsnittet)
public class Course implements Serializable
{
public final static int RESOURCE_PAGE = 1;
public final static int RESOURCE_SCORM = 2;
public final static int RESOURCE_TEST = 3;
public final static int NODE = 1;
public final static int LEAF = 2;
public final static int NO = 0;
public final static int YES = 1;
private int id = -1;
private int rootid = -1;
private int type = -1;
private int position = -1;
private int visible = -1;
private int active = -1;
private Integer resourcetype = null;
private Integer testid = -1;
private String title = null;
.... osv.
get'er og set'er ...
}
Hvordan kopierer jeg mit objekt ??????
Ved godt at jeg kan lave
Course oldCourse = new Course();
Course newCourse = new Course();
newCourse.setId(oldCourse.getId());
Men i og med jeg har en masser variabler virker det alt for besværligt. Er det en nemmere måde at gøre det på ( måske gøre brug af Hash.map ) ?
Har nedenstående koden. Den virker. MEN fordi jeg har brug for at udskfte værdier såsom id og rootId, iden jeg gemmer objektet i min database ( bruger Hibernatet) har jeg brug for at løbe mine værdier igennem og udskifte nogle af dem.
Er den nogen der har nogle ideer eller løsningsforslag ?
private Object deepCopy(Object oldObj) throws Exception
{
ObjectOutputStream oos = null;
ObjectInputStream ois = null;
try
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(bos);
oos.writeObject(oldObj);
oos.flush();
ByteArrayInputStream bin = new ByteArrayInputStream(bos.toByteArray());
ois = new ObjectInputStream(bin);
return ois.readObject();
}
catch(Exception e)
{
log.info("deepCopy");
throw(e);
}
finally
{
oos.close();
ois.close();
}
}
