首页 > 解决方案 > 不同的对象数组元素引用同一个对象?

问题描述

我有一个用于存储不同对象的对象数组。当我尝试从任一对象获取数据时,它会给出最后一个对象的数据。我制作了一些新的测试文件,并将所有内容归结为问题本身。这就是我的意思:

public class Test
{
  public static ObjectTest[] objArray = new ObjectTest[2];

  public static void main(String[] args)
  {
    objArray[0] = new ObjectTest("Jimmy");
    objArray[1] = new ObjectTest("Terry");
    System.out.println(objArray[0].getName());
    System.out.println(objArray[1].getName());
  }
}

这输出:

Terry
Terry

这里也是 ObjectTest.java:

public class ObjectTest
{
  private static String name;

  public ObjectTest(String nm)
  {
    name = nm;
  }

  public static String getName()
  {
    return name;
  }
}

是什么让这个打印出最后一个对象的名称?这里不应该有2个不同的对象吗?好像只有1个。

标签: java

解决方案


所有类实例之间共享的静态变量,最后一个值覆盖您之前设置的所有内容。使用实例变量而不是静态变量:

public class Main {
    public static ObjectTest[] objArray = new ObjectTest[2];

    public static void main(String[] args) {
        objArray[0] = new ObjectTest("Jimmy");
        objArray[1] = new ObjectTest("Terry");
        System.out.println(objArray[0].getName());
        System.out.println(objArray[1].getName());
    }
}

class ObjectTest {
    private String name;

    public ObjectTest(String nm) {
        name = nm;
    }

    public String getName() {
        return name;
    }
}

输出:

Jimmy
Terry

推荐阅读