30. oktober 2002 - 09:56Der er
14 kommentarer og 2 løsninger
Clone() på ett "unknown" objekt
Jag har en Vector med object som jag vill kopiera till en annan Vector, och de två vectorerna får INTE ha referenser till samma objekt på något stælle. Men Vectorn kan innehålla alla møjliga objekt, æven sådana som inte ær cloneable och min kod som jag testade ser ut såhær:
public static final Vector copyVector(Vector source) { Vector result = new Vector(); if(source == null) return null;
for(int i = 0; i < source.size(); i++) { try { result.add(((Cloneable)source.get(i)).clone()); } catch(CloneNotSupportedException e) { result.add(source.get(i)); } } }
men man får inte gøra så, før cloneable innehåller inte funktionen clone(), och derfor virker det ikke. några tips? jag vill inte anvænde mig av instanceof
Iøvrigt som tommelfinger-regel: hvis kopiering af data begynder at blive kompleks, så bør man overvejde om man kan ændre designet, så kopiering ikke er nødvendig.
cloneBean(java.lang.Object bean) Clone a bean based on the available property getters and setters, even if the bean class itself does not implement Cloneable.
Der er flere problemer med at bruge reflection: 1) performance er ikke så god 2) mutable objekter som ikke har en clone bliver ikke klonet som de burde 3) en del objekter har en clone som laver shallow copy i.s.f. deep copy (f.eks. HashMap !) hvilket muligvis også vil være et problem for dig
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.