我们可以通过检查存在来动态创建对象吗?

时间:2014-03-05 07:11:46

标签: java object

对于下面的课程,如果名称等于某个东西,我想访问一个对象,让我们说"你"。否则我想创建它。 我想检查是否存在名称为'你'然后将条目添加到ArrayList contInstances。如果这样的实例不存在,我想创建它。下次我可能必须使用相同的对象,以便我可以向ArrayList添加更多的条目。

public class Values {
    String name;
    ArrayList<anotherClass> classInstances = new ArrayList<anotherClass>();
}

这恰好是一个循环。我怎么能这样做?

编辑:我在这里引用一个例子:

if (an object exists that contains field 'name' == 'YOU'){
add entries to the array list directly using the available object
}
else {
create a new object and set the 'name' = 'YOU';
add entries to the array list;
}

1 个答案:

答案 0 :(得分:2)

听起来有点像你希望按名称拥有缓存。请考虑使用ArrayList来跟踪Name-&gt; Object映射,而不是Map<String, AnotherClass>

然后您可以使用此方法:

Map<String, AnotherClass> instances = new LinkedHashMap<String, AnotherClass>();
for (...) {
    String name = getNextName();
    AnotherClass instance = instances.get(name);
    if (instance == null) {
        instance = makeInstance(name);
        instances.put(name, instance);
    }
    useInstance(name, instance);
}

完成该循环后,如果您仍需要List<AnotherClass>,则可以使用return new ArrayList<AnotherClass>(instances.values());