I have two classes, one class is called Client and the other one is call Department. The class Department stores an array of Clients.
I was making some tests to prove Deep Copy in Java, but it does not seem to work.
In the Department class I have a get method that returns the list of Clients that stores. For example:
public Client[] getClientList() {
return clientList;
}
a method that returns the number of clients that I store:
public int getNumberClients() {
return n;
}
and one method that returns an specific Client from the clientList:
public Client getClient(int pos){
return clientList[pos];
}
In my main program I have created a certain number of Clients and store them into the Department class, specifically in the clientList attribute; something like this:
Client objCli1=new Cliente(...
...
Department objDep=new Department(100)
objDep.addClient(objCli1)
...
so now I want to return the array of Clients from the Department class into my main program, and copy their elements into another client Array. Something like this:
Client[] clientList;
int n=objDep.getNumberClients();
clientList=new Client[n];
for (int i=0;i<n;i++){
clientList[i]=objDep.getClient(i);
}
So when I print the elements of clientList they are the same as the ones that I have in my Department class. The problem is that if I do something like this:
clientList[2].setName("Michaels")
it changes the name of the second client that I got stored in my Department class; I wonder why is that? because I have made a deep copy of the elements that I have in my Department class to the new clientList in my main program. So why is not working?
Any hint how to do that it would be great.
Thanks