Search code examples
javaobjectreferencedeep-copyshallow-copy

Java: Copy attributes from one object instance to another?


Say you have

public class Car{
  private Engine m_eng;
  public Car(){

  }

  public Engine getEngine(){
    return m_eng;
  }

  public void setEngine(Engine engine){
    m_eng = engine;
  }
}

public class Engine{
  private String m_name;
  public Engine(){};
  public Engine(String name){ m_name = name;}

  public String getName(){
    return m_name;
  }
  public void setName(String name){
    m_name = name;
  }
}

public static void main(String[] args){
  Engine eng1 = new Engine("abc");
  Car car1 = new Car();
  car1.setEngine(eng1);
  Car car2 = new Car();
  car2.setEngine(car1.getEngine());
}

Question: are the engine of car1 and car2 referring to the same instance of Engine, or when I do car2.setEngine(car1.getEngine()), it automatically make a deep copy of car1.getEnginer() and set to car2 ?


Solution

  • car1--------------->eng1

    car2.setEngine(car1.getEngine());
    

    results in

    car1--------------->eng1 <------------------car2

    thereby pointing to same engine instance