无法在Java中的另一个对象中查看ArrayList元素

无法在Java中的另一个对象中查看ArrayList元素,java,arraylist,Java,Arraylist,我试图在另一个类中查看ArrayList的元素,但它显示什么都没有。在另一个类中,您可以在ArrayList中看到元素 这是密码 头等舱 import java.util.ArrayList; public class Test { ArrayList<String> inventory = new ArrayList<String>(); public void test() { inventory.add("item"); } publi

我试图在另一个类中查看ArrayList的元素,但它显示什么都没有。在另一个类中,您可以在ArrayList中看到元素

这是密码

头等舱

import java.util.ArrayList;
public class Test {

ArrayList<String> inventory = new ArrayList<String>();

public void test() {
  inventory.add("item");
}

public void check() {
  System.out.println(inventory);
}

}
主类

public class Main {

  public static void main(String[] args) {
    Test testObj = new Test();
    Test2 test2Obj = new Test2();
    testObj.test();
    testObj.check();
    test2Obj.test2();
  }
}
输出

[item]
[]

在main方法中,调用处理添加操作的方法,但在第二个类和main方法中不调用任何add方法

 testObj.test();
 testObj.check();

这显示您将一项添加到arraylist并显示它。但是在第二个类中,除了调用它之外,没有添加任何内容。因此,无法显示该方法中的任何元素。应该做的是,您只需要在第二个类中调用adding方法,然后尝试使用display方法。

在java类中,变量是对象关联的,除非它们没有声明为static

通过对象关联的方式,当一个对象在Java中用new关键字初始化时,所有对象都将拥有自己的内存和自己的类变量

在main方法中,当您创建
Test
类的对象时,以及当您在Test2类中创建另一个测试类对象时,这两个类都将彼此完全独立。两者都有自己的内存和变量

如果您希望从第一个对象获得
库存
变量的更新,以便在另一个对象中可用,则需要将其声明为静态,并应在静态块内初始化。静态变量在类的所有对象之间共享。详情如下:

static ArrayList<String> inventory;

static {
        inventory = new ArrayList<String>();
}
静态数组列表清单;
静止的{
库存=新的ArrayList();
}
您没有在
Test2
类中调用
test()
方法。 要使其工作,请按如下所示更改
Test2


import java.util.ArrayList;
public class Test2 {

Test testObj = new Test();

public void test2() {
  testObj.test();
  System.out.println(testObj.inventory);
}

}

因为它们是不同的物体。每次使用
new
都将创建一个新的、不同的对象,每个对象都包含各自不同的字段集。因此,新的
测试中的列表
Test2

import java.util.ArrayList;
public class Test2 {

Test testObj = new Test();

public void test2() {
  testObj.test();
  System.out.println(testObj.inventory);
}

}