java 数组列表为空

wlzqhblo  于 2023-02-21  发布在  Java
关注(0)|答案(3)|浏览(131)

我认为这是一个简单的问题,但却阻碍了我在项目中的前进。为什么当我使用ArrayList作为一个类到另一个类的引用时,它是空的?

public class FirstClass {
    private ArrayList<String> myList = new ArrayList<>();

    public ArrayList<String> getMyList() {
        return myList;
    }

    public static void main(String[] args) {
        FirstClass fc = new FirstClass();
        fc.getMyList().add("Test");
        System.out.println(fc.getMyList());
    }
}

运行FirstClass.main时的输出:
x一个一个一个一个x一个一个二个x
运行OtherClass.main时的输出:

[]

我在Google上搜索了很多次,找到的解决方案都不起作用。我一步一步地遵循,在填充ArrayList的类中创建一个 * getter * 方法,使用该方法填充它,使用print方法确保在main方法的末尾填充数组。ArrayList是满的并且准备好使用,但是当用作参考时是空的。

j7dteeu8

j7dteeu81#

由于FirstClass的新示例是在OtherClass中创建的,因此OtherClass中的otherList为空。
oc.otherList引用的ArrayList与您在main方法中为FirstClass填充的ArrayList不同。
您可以编辑您的OtherClass来工作:

public class OtherClass {
   private FirstClass csv;
   public ArrayList<String> otherList;

   public OtherClass(FirstClass fc) {
       this.csv = fc;
       this.otherList = fc.getMyList();
   }

   public static void main(String[] args) {
       FirstClass fc = new FirstClass();
       fc.getMyList().add("Test");
       OtherClass oc = new OtherClass(fc);
       System.out.println(oc.otherList);
   }
}
vhmi4jdf

vhmi4jdf2#

OtherClass创建没有FirstClass主方法的FirstClass,因此它不向列表添加()。

vwhgwdsa

vwhgwdsa3#

你可以做下面这样的事情。

public class FirstClass {

    private List<String> myList;

    // Instance block: will executed the moment you create object
    // of FirstClass
    {
        myList = new ArrayList<>();
        myList.add("Test String");
    }

    public List<String> getMyList() {
        return myList;
    }
}
public class OtherClass {

    private static List<String> otherList;

    public static void main(String[] args) {
        FirstClass fc = new FirstClass();
        otherList = fc.getMyList();
        System.out.println(otherList); //iterate if want to check specific elements in the list
    }
}

或者一个更好的方法是创建一个向列表添加元素的方法,并通过使用firstclass的object调用该方法在otherclass中读取它。

相关问题