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