Java - 使用变量引用对象

时间:2015-10-18 22:23:15

标签: java object

我试图在if语句中实例化一个对象,基本上是用户想要创建一个对象的对象。如果正在执行相同的代码(使用不同的参数),那么对该对象的引用将是相同的...

您可以从其他变量引用该对象,例如在对象的构造函数中创建的唯一ID吗?

    Test test1 = null;
    if (run == true){
       test1 = new Test(argument1);
       test1 = test1.id;
       }

我没经验,但基本上想从对象变量然后指向该对象,因此当从再次执行的代码中实例化新对象时,它不会被覆盖。

由于

4 个答案:

答案 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处的元素。