Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们可以通过检查存在来动态创建对象吗?_Java_Object - Fatal编程技术网

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

Java 我们可以通过检查存在来动态创建对象吗?,java,object,Java,Object,对于下面的类,我想访问一个对象,如果名称等于某个东西,就说“you”。否则我想创建它。 我想检查是否存在名为“you”的对象,然后向ArrayList实例添加条目。如果这样的实例还不存在,我想创建它。下次我可能需要使用同一个对象,以便可以向ArrayList添加更多的条目 public class Values { String name; ArrayList<anotherClass> classInstances = new ArrayList<anothe

对于下面的类,我想访问一个对象,如果名称等于某个东西,就说“you”。否则我想创建它。 我想检查是否存在名为“you”的对象,然后向ArrayList实例添加条目。如果这样的实例还不存在,我想创建它。下次我可能需要使用同一个对象,以便可以向ArrayList添加更多的条目

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

这听起来有点像你想要一个名字缓存。不要使用<代码> ARAYLISTAB/CODE >,请考虑使用<代码> MAP>代码>跟踪名称->对象映射。

然后,您可以使用此方法:

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);
}
Map instances=newlinkedhashmap();
对于(…){
字符串名称=getNextName();
AnotherClass实例=instances.get(name);
if(实例==null){
instance=makeInstance(名称);
实例。放置(名称、实例);
}
useInstance(名称、实例);
}

循环完成后,如果仍然需要
列表
,可以使用
返回新的ArrayList(instances.values())

对象通常没有名称。特别是,变量不是对象。现在,如果你有一个类,它有一个
getName()
方法或类似的东西,那就不同了。或者,您可能希望有一个
映射
,将名称与对象关联起来。不管是哪种方式,请澄清问题。你只需要有一个方法来检查对象是否存在,如果不存在,它就会创建一个对象,添加它,然后返回它。请澄清你想做什么?你想比较什么?@JonSkeet
Values
类有一个
名称
成员-大概这就是问题所指的。不相关的注意-大多数Java编码标准规定类名应该以大写字母开头(即
另一个类
,而不是
另一个类
)。
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);
}