我试图在if语句中实例化一个对象,基本上是用户想要创建一个对象的对象。如果正在执行相同的代码(使用不同的参数),那么对该对象的引用将是相同的...
您可以从其他变量引用该对象,例如在对象的构造函数中创建的唯一ID吗?
Test test1 = null;
if (run == true){
test1 = new Test(argument1);
test1 = test1.id;
}
我没经验,但基本上想从对象变量然后指向该对象,因此当从再次执行的代码中实例化新对象时,它不会被覆盖。
由于
答案 0 :(得分:1)
我感觉你已经过度补偿了Java中通常不会出现的情况。
直接回答这个问题:除非你有一个数据结构(如Map<Integer, Test>
)跟踪这些实例,否则你将无法使用对象的ID来引用该对象
在您说明的方案中,test1
不是null
的唯一方法是您的测试条件是否通过。除此之外,它有可能成为null
并在以后导致运行时问题。此外,如果test1
不是test1.id
的实例,则重新分配到Test
会失败。
答案 1 :(得分:0)
您无法在Java中动态命名变量。我可以建议创建List
Test
个变量吗?每次循环执行时,将变量添加到List
。这样您就可以引用已创建的所有对象。
答案 2 :(得分:0)
创建新实例时不会覆盖实例,只会覆盖对该对象的引用。如果要管理对象的多个实例,则必须跟踪对它们的引用。您可以在构建函数中保留一组对象引用或对象引用的集合。或者,您可以将对象引用返回给调用者并在那里跟踪它。
答案 3 :(得分:0)
你可能想在这里使用像数组这样的东西
int count = 0;
Test[] tests = new Test[10];
if(run == true){
tests[count] = new Solution(argument1);
count++;
}
在这种情况下,我们正在为10个对象制作插槽,实际上任何数字都可以进入10个对象的位置。如果您不确定需要制作多少个对象,那么使用像ArrayList这样的东西也是一个好主意。
要从数组中获取元素并使用该对象,我们只需使用数组的名称,然后使用数组中的位置。
tests[0].someMethod() //will call the method on the object at index 0
记住数组从零开始计数,所以如果你想要第二个元素,你必须要求索引1处的元素。