[英]Java - Referencing an object with a variable
我试图从 if 语句中实例化一个对象,基本上是用户想要创建一个对象时的对象。 如果正在执行相同的代码(使用不同的参数),那么对对象的引用将是相同的,所以......
您能否从不同的变量中引用该对象,例如在该对象的构造函数中创建的唯一 ID?
Test test1 = null;
if (run == true){
test1 = new Test(argument1);
test1 = test1.id;
}
我没有经验,但基本上想要一个来自对象的变量然后指向该对象,所以当一个新对象从再次执行的代码实例化时它不会被覆盖。
谢谢
我觉得您对 Java 中通常不会发生的场景进行了过度补偿。
直接回答这个问题:除非您有一个数据结构(如Map<Integer, Test>
)跟踪这些实例Map<Integer, Test>
否则您以后将无法使用对象的 ID 来引用该对象。
在您说明的场景中, test1
不为null
的唯一方法是您的测试条件是否通过。 除此之外,它有可能为null
并在以后导致运行时问题。 此外,如果test1.id
不是Test
的实例,则重新分配给test1
将失败。
您不能在 Java 中动态命名变量。 我可以建议创建一个Test
变量List
吗? 每次循环执行时,将变量添加到List
。 这样您就可以引用所有已创建的对象。
创建新实例时不会覆盖该实例,只会覆盖您对该对象的引用。 如果要管理对象的多个实例,则必须跟踪对它们的引用。 您可以在构建函数中保留一组对象引用或一组对象引用。 或者,您可以将对象引用返回给调用者并在那里跟踪它。
你可能想在这里使用类似数组的东西
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 处的元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.