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.
Answer from egaga on Stack OverflowCreate 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.
Basic: Object Copying in Java.
Let us Assume an object- obj1, that contains two objects, containedObj1 and containedObj2.

shallow copying:
shallow copying creates a new instance of the same class and copies all the fields to the new instance and returns it. Object class provides a clone method and provides support for the shallow copying.

Deep copying:
A deep copy occurs when an object is copied along with the objects to which it refers. Below image shows obj1 after a deep copy has been performed on it. Not only has obj1 been copied, but the objects contained within it have been copied as well. We can use Java Object Serialization to make a deep copy. Unfortunately, this approach has some problems too(detailed examples).

Possible Problems:
clone is tricky to implement correctly.
It's better to use Defensive copying, copy constructors(as @egaga reply) or static factory methods.
- If you have an object, that you know has a public
clone()method, but you don’t know the type of the object at compile time, then you have problem. Java has an interface calledCloneable. In practice, we should implement this interface if we want to make an objectCloneable.Object.cloneis protected, so we must override it with a public method in order for it to be accessible. - Another problem arises when we try deep copying of a complex object. Assume that the
clone()method of all member object variables also does deep copy, this is too risky of an assumption. You must control the code in all classes.
For example org.apache.commons.lang.SerializationUtils will have method for Deep clone using serialization(Source). If we need to clone Bean then there are couple of utility methods in org.apache.commons.beanutils (Source).
cloneBeanwill Clone a bean based on the available property getters and setters, even if the bean class itself does not implement Cloneable.copyPropertieswill Copy property values from the origin bean to the destination bean for all cases where the property names are the same.
Hello there! I need some kind an advice. I'm trying to find out some library for Java providing possibility to copy object with changed values. For example, in Scala we have method copy() in case classes copying all fields to another one. Also there is an approach to define which fields will be changed by passing them into copy(). Does something like this exist in Java world?
[Java] Copy constructors?
Copying files... best method?
Reddit clone in one hour and 100 lines of Java
Very nice, now do it in C++
More on reddit.com