Java:将属性从一个对象实例复制到另一个对象实例?

标签 java object reference deep-copy shallow-copy

说你有

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());
}

问题:car1 和 car2 的引擎是否指的是同一个 Engine 实例,或者当我执行 car2.setEngine(car1.getEngine()) 时,它会自动对 car1 进行深度复制.getEngineer() 并设置为 car2 ?

最佳答案

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

car2.setEngine(car1.getEngine());

结果

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

从而指向同一个引擎实例

关于Java:将属性从一个对象实例复制到另一个对象实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21532091/

相关文章:

javascript - 检查 JavaScript 对象的最佳方法是否具有另一个 JavaScript 对象的所有键

iphone - 如何在 iphone 的 NSDictionary 中设置数组值和键?

java - 集合分配、浅复制、惰性复制和深复制的区别和最佳方法

c++ - 我们可以在 C++ 中重新分配引用吗?

java - Spring Security 允许具有相同后缀的路径

java - Java中如何使用FileInputStream

Java 8 条件过滤器 | lambda 斯

php - Codeigniter 的面向对象方案

java - 数据未插入 MySQL 数据库

c++ - 我可以确定 const 引用在被另一个实体修改时会更新吗?