0

Hello guys i am trying to deep copy class A. Im having trouble deep copying class A. subscriptions is an array reference that holds the objects of SubscriptionYear. Could someone help me out using the clone method to do a deep copy.

public class A {

private String countryNames;
private SubscriptionYear[] subscriptions;
private int size;
private int location;

public A(String country)
{
    this.countryNames = country;
}
public A(String country, int arraylength)
{
    this.countryNames = country;
    this.size = arraylength;
    subscriptions = new SubscriptionYear[size];
    location = 0;
}
//adds the subscription.
public void addSubscriptionYear(int year, double subscription)
{
        subscriptions[location]= new SubscriptionYear(year, subscription);
        ++location;
}

SubscriptionYear:

public class SubscriptionYear {

private int year;
private double subscriptions;

public SubscriptionYear(int year,double subscriptions)
{
    setYear(year);
    setSubscription(subscriptions);
}
public void setYear(int Year)
{
    this.year= Year;
}
public void setSubscription(double value)
{
    this.subscriptions = value;
}
public int getYear()
{
    return year;
}
public double getSubscription()
{
    return subscriptions;
}
  • possible duplicate of [How do you make a deep copy of an object in Java?](http://stackoverflow.com/questions/64036/how-do-you-make-a-deep-copy-of-an-object-in-java) – LeffeBrune Nov 12 '14 at 04:13

2 Answers2

0
public Object clone() {
    A newA = new A(countryNames);
    newA.size = size;
    newA.subscriptions = new SubscriptionYear[size];
    for(SubscriptionYear subYear : subscriptions) {
        newA.addSubscriptionYear(subYear.getYear(), subYear.getSubscription());
    }
    return newA;
}
Jason
  • 11,744
  • 3
  • 42
  • 46
0

Ok i solved my problem. this solution addressed my issue:

public Object clone() {
A newA = new A(this.countryNamse, this.arraylength);

for(int i=0;i<this.newA.subscriptions.length;i++) {
   newA.subscriptions[i] = subscriptions[i[]; 
 }
return newA;
 }