Java: Copy attributes from one object instance to another?
deep-copy, java, object, reference, shallow-copy
Solution
car1--------------->eng1
car2.setEngine(car1.getEngine());
results in
car1--------------->eng1 <------------------car2
thereby pointing to same engine instance
Problem
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 ?