java - 如何在java中从可变对象创建不可变对象?
问题描述
如何创建不可变的星球所以名称不会改变?我正在苦苦挣扎,因为我认为它是具有可变对象的不可变项目。如果我错了,请纠正我。
每次我在输出中更改名称时也会更改。我错过了什么吗?
我尝试将所有字段设为私有和最终(不在此示例中),但我认为我缺少一些工作代码。
我知道 java.util.Date 已被弃用,但这只是举例。
import java.util.Date;
public final class Planet {
String name;
private final Date discoveryDate;
public Planet (String name, Date discoveryDate) {
this.name = name;
this.discoveryDate = new Date(discoveryDate.getTime());
}
public String getName()
return name;
}
public Date getDiscoveryDate() {
return new Date(discoveryDate.getTime());
}
public static void main(String [] args) {
Planet Earth = new Planet("Earth Planet", new Date(2020,01,16,17,28));
System.out.println("Earth");
System.out.println("------------------------------------");
System.out.println("Earth.getName: " + Earth.getName());
System.out.println("Earth.getDiscoveryDate: " + Earth.getDiscoveryDate());
}
}
解决方案
推荐阅读
- python-3.x - 将值从瞬态模型传递给 One2many - odoo 13(错误值错误)
- reactjs - 使用 react redux 重置多个状态
- wordpress - 目录未加载任何内容(LuckyWP)
- java - 无法将 java 代码集成到我的 react native 项目中 - 错误:不兼容的类型:ReactApplicationContext 无法转换为 Activity
- ios - 应用内购买成功后关闭按钮 - Ios - Swift - Xcode
- angularjs - 为 angularJS URL 返回 401 的最简单方法
- amazon-cloudformation - 如何获取 AWS KMS Key Arn 并通过 CloudFormation 在 IAM 角色内联策略中传递它?
- c++ - 模板参数替换失败且未完成隐式转换
- python - Python:根据输入()从列表中删除一个项目?
- git - 使用 https://github.com/clj-jgit/clj-jgit 获取当前分支和提交号