繁体   English   中英

Java - 使用变量引用对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM