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 ?

Original source

Related problems