How do I copy an object in Java?
clone, copy, java, object
Solution
Create a copy constructor:
class DummyBean {
private String dummy;
public DummyBean(DummyBean another) {
this.dummy = another.dummy; // you can access
}
}
Every object has also a clone method which can be used to copy the object, but don't use it. It's way too easy to create a class and do improper clone method. If you are going to do that, read at least what Joshua Bloch has to say about it in Effective Java.
Problem
Consider the code below: ``` DummyBean dum = new DummyBean(); dum.setDummy("foo"); System.out.println(dum.getDummy()); // prints 'foo' DummyBean dumtwo = dum; System.out.println(dumtwo.getDummy()); // prints 'foo' dum.setDummy("bar"); System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo' ``` So, I want to copy the `dum` to `dumtwo` and change `dum` without affecting the `dumtwo`. But the code above is not doing that. When I change something in `dum`, the same change is happening in `dumtwo` also. I guess, when I say `dumtwo = dum`, Java copies the reference only. So, is there any way to create a fresh copy of `dum` and assign it to `dumtwo`?