java - Java:通过在初始化期间返回现有类来防止重复类
问题描述
我正在创建一个类,该类在创建时会自动添加到列表中。我不希望列表中包含具有相同类变量的重复类name
。我想检查构造函数开头的列表,如果列表包含重复项,那么我希望新类简单地指向该重复项,而不是返回一个新类。这是我的代码:
private Country(int newID, String name) {
Country duplicate = Country.getByName(name);
if (duplicate == null) {
String activeUsername = (activeUser != null) ? activeUser.getUsername() : "NULL";
LocalDate creationDate = LocalDate.now();
LocalDateTime lastUpdated = LocalDateTime.now();
set(newID, name, creationDate, activeUsername, lastUpdated, activeUsername);
if (newID > 0) {
insert();
addToList();
}
} else {
this = duplicate; //<== this is the part I can't seem to get right.
}
}
请注意,我不希望它简单地创建一个具有相同值的新实例,我希望它实际指向列表中已经存在的实例。
编辑:我的数据库有 UNIQUE 约束,我不想违反它。
解决方案
您不能在构造函数中执行此操作。但是,您可以编写有条件地返回现有对象或新对象的工厂函数。
将一个名为 create 的新静态函数添加到您的类中,并将您的代码移到那里。
推荐阅读
- python - 如何根据值将python字典拆分为多个字典
- python - 使用 Python.Net 导入具有依赖项的 .NET Standard 2.0 类库
- r - 提取由'rfm'包生成的RFM结果 - R
- docker - kubernetes cifs smb flexvolume 缺少文件
- apache-spark - 每次调用函数都会实例化 Hive UDF 类
- python - 启用 selenium python 后查找并单击按钮
- postgresql - postgresql bgworker SIGTERM 处理程序调用了两次
- wso2 - WSO2 Enterprise Integrator 6.3.0:如何将多个文件合并为一个?
- kohana-3.3 - Kohana 3.3 带有子文件夹的路由在 Windows 上工作但在 Linux 上失败
- javascript - Emscripten:如何使用标头构建 C++ 项目