how do i create a copy of an object in java, instead of a pointer

25,431

Solution 1

First, have your class implement the Cloneable interface. Without this, calling clone() on your object will throw an exception.

Next, override Object.clone() so it returns your specific type of object. The implementation can simply be:

@Override
public MyObject clone() {
    return (MyObject)super.clone();
}

unless you need something more intricate done. Make sure you call super.clone(), though.

This will call all the way up the hierarchy to Object.clone(), which copies each piece of data in your object to the new one that it constructs. References are copied, not cloned, so if you want a deep copy (clones of objects referenced by your object), you'll need to do some extra work in your overridden clone() function.

Solution 2

Most objects have a method clone() that will return a copy of that object, so in your case

f2 = f1.clone()

Solution 3

You use clone.

Solution 4

Use something like

f2 = f1.clone();

If you have custom properties (or members), you should override clone in your class to make deep copy. You can learn about shallow and deep copy here

http://javapapers.com/core-java/java-clone-shallow-copy-and-deep-copy/

Share:
25,431
Ephraim
Author by

Ephraim

Currently a Software Engineer at Facebook You can find out more about me from: My Website My LinkedIn Profile

Updated on July 22, 2020

Comments

  • Ephraim
    Ephraim almost 4 years

    Lets say i have an object that i created. I edited some values in it so it is different than the new object() that i referenced. Lets call that object f1. Now i want another object called f2 to be a copy of f1 but not a pointer, so that when i change a value in f2, it does not also change f1. How would i go about doing this in java?

  • Adam Kurkiewicz
    Adam Kurkiewicz about 9 years
    The question is about Java not javascript