首页 > 解决方案 > 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 约束,我不想违反它。

标签: javadatabaseinitialization

解决方案


您不能在构造函数中执行此操作。但是,您可以编写有条件地返回现有对象或新对象的工厂函数。

将一个名为 create 的新静态函数添加到您的类中,并将您的代码移到那里。


推荐阅读