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



我试图在另一个类中查看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);
}
}

二级

import java.util.ArrayList;
public class Test2 {
Test testObj = new Test();
public void test2() {
System.out.println(testObj.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]
[]

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

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

在main方法中,当您创建Test类的Object和在Test2类中创建另一个测试类对象时,两者将完全独立。两者都有自己的记忆和变量。

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

static ArrayList<String> inventory;
static {
inventory = new ArrayList<String>();
}

在主方法中,您调用了处理添加操作的方法,但在第二个类和主方法中没有调用任何添加方法。

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

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

您没有在Test2类中调用test()方法。要使其工作,请按如下方式更改Test2类。


import java.util.ArrayList;
public class Test2 {
Test testObj = new Test();
public void test2() {
testObj.test();
System.out.println(testObj.inventory);
}
}

最新更新