Search code examples
javaarraysobjectclonedeep-copy

Creating a deep copy method, Java


I want to make a deep copy method. I seeked help here the other day with this issue, but that was for a copy constructor. Now I need a regular method. I have the code created (nonworking), but I'm just not understanding it completely.

public GhostList deepCopy(){
        int length=this.getLength();
        GhostList jadeed=new GhostList();
        Ghost[] data = new Ghost[length];
        for (int i=0;i<this.getLength();i++){
            data[i] = new Ghost();
            data[i].setX(this.ghosts[i].getX());
            data[i].setY(this.ghosts[i].getY());
            data[i].setColor(this.ghosts[i].getColor());
            data[i].setDirection(this.ghosts[i].getDirection());
        }

        return jadeed;
    }

Now when I create a new GhostList named jadeed, and then under that I create a new data array of ghosts, does it know that data belongs to the jadeed GhostList? I dont see how the two can be associated, even though they should be.

Also, I'm not getting the lengths to match up for the copy and this.object. What is my problem?


Solution

  • You created a new GhostList and a new Ghost array.
    You fill in the Ghost array and return the GhostList but the returned GhostList has nothing to do with the Ghost array.
    You should add all the new ghosts to the GhostList