java - 复制构造函数创建垃圾对象

标签 java oop constructor garbage

我的老师给我上了两门课,一门是护照,另一门是日期。
date 包含 3 个属性(字符串日、字符串月、字符串年)、getter、setter 和 2 个构造函数,其中一个是复制构造函数:

 public date(date dt)
 this.day=dt.getd();
 this.month=dt.getm();
 this.yaer=dt.gety();

passport 类包含 2 个属性(字符串名称、日期 exp(来自日期类))并且有一个构造函数:

public passport(string name, date exp)   
this.name=name;  
this.exp= new date(exp);    

现在在主类中,每次我创建新日期和新护照时,每个日期都是重复的,并且每个护照都会得到 1 个垃圾对象。
我怎样才能克服这个垃圾对象?

最佳答案

how can i get over this garbage object?

如果date实例是可变的,那么你就不需要;你做你正在做的事。

如果date实例是不可变的(它们的状态一旦创建就无法更改),那么您只需使用给定的实例,而不是创建一个新实例:

public passport(string name, date exp)   
    this.name = name;  
    this.exp = exp;
}

如果可以修改 exp,您就不会想要这样做,因为它会在您的 passport 实例与将 exp 传递给它的任何内容之间产生串扰。

关于java - 复制构造函数创建垃圾对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46264306/

相关文章:

java - 使用 exec-maven-plugin 进行调试

java - maven-remote-resources-plugin 不复制文件,仅复制文件夹结构

java - 比较两个列表时发生奇怪的情况(groovy)

java - 如何在良好的 View 中从嵌套 HashMap 中检索数据?

c++ - 使用 C++ 类显示 2 名员工之间输入最多的工资

java - 在java中,即使没有任何东西可以访问线程,它也会继续运行吗?

C++:为什么访问类数据成员比访问全局变量慢?

java - 构造函数方法尝试从子类初始化insatnce变量得到StackOverflowError

c++ - 构造关联容器

c++ - 使用相同的初始化列表构造数组的所有元素的 DRY 方法?