首页 > 解决方案 > 维护一组相似对象的建议

问题描述

我有一门课说大陆。我创建了许多这样的实例。我想将所有此类实例存储在一个集合中。每次创建新对象时,都应将其添加到 Set 中。

public class Continent {

    private static HashSet<Continent> globalContinents = new HashSet();
    final private String continent_name;

    Continent(String continent_name){
        this.continent_name = continent_name;
        Continent.globalContinents.add(this);
    }
}

这给了我泄漏物体的警告。我将使用多线程,所以你有什么建议可以有效地实现这样的事情吗?设计理念?

标签: java

解决方案


您可以为您的大陆创建一个简单的工厂。

public class ContinentFactory {
    private Set<Continent> continents = new HashSet<>();

    public Continent create(String name) {
        Continent continent = new Continent(name);
        continents.add(continent);
        return continent;
    }

    public static class Continent {
        private String continentName;

        public Continent(String continentName) {
            this.continentName = continentName;
        }

        ...
        equals and hashcode 
        ....
    }
}

您也应该遵循 Java 命名约定: https ://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html


推荐阅读