java - 如何保证更新其他字段时更新字段?
问题描述
我有课
public class Order {
private LocalDateTime creationDate;
private Date creationDateAsDate;
}
这creationDate
是订单中的现有字段。这creationDateAsDate
是一些功能的新领域。
我需要在保存旧字段的所有位置设置并保存这个新字段。不幸的是,我正在使用遗留代码,并且我有 5 个creationDate
设置字段的位置。现在我看到了 2 个解决方案:
- 在所有调用
creationDateAsDate
setter 的地方 调用 settercreationDate
。 creationDateAsDate
在 setter 中调用creationDate
setter。
我不喜欢这两种变体。有人可以回答如何做到这一点吗?它可能是我的变体之一,或其他东西。
解决方案
我建议更新两个没有错误的设置器(这就是它们存在的原因)调用通用私有方法以避免无限递归。
public void setCreationDate(LocalDateTime creationDate) {
Date creationDateAsDate = Date.from(creationDate.atZone(ZoneId.systemDefault())
.toInstant());
updateDates(creationDate, creationDateAsDate);
}
public void setCreationDateAsDate(Date creationDateAsDate) {
LocalDateTime creationDate = LocalDateTime.ofInstant(
creationDateAsDate.toInstant(),
ZoneId.systemDefault());
updateDates(creationDate, creationDateAsDate);
}
private void updateDates(LocalDateTime creationDate, Date creationDateAsDate) {
this.creationDate = creationDate;
this.creationDateAsDate = creationDateAsDate;
}
推荐阅读
- python - 是否有一种更快的方法来使用 2d numpy 布尔数组从 2d 数组中选择元素,但具有 2d 输出?
- java - 通过 java 中的 clone() 复制数组未按预期工作
- php - 手动添加 cookie - Curl PHP
- swift - 从 SceneDelegate 加载视图时出现黑屏
- java - 如何通过修改打印 printBoard?
- javascript - 如何仅使用 Jquery 编写按钮 html 代码?
- ios - MacOS x Flutter - “构建成功,但未找到预期的应用程序”
- java - Wildfly 模块类加载
- pytorch - TensorBoard 图例和标签轴
- python - 如何在python2.7中的字符串中嵌入一个字符串,其中已经转义了引号?