我想访问我在BAL类中创建的arraylist,该类名为books

BAL类

public class BAL {
 ArrayList<members> member=new ArrayList<members>();
       members m1=new members(1,"Tom", "12345678", "No");
       members m2=new members(2,"Richard", "23456789", "No");
       members m3=new members(3,"Hillary", "45678901", "The Wind in the Willows");
       public void member_add()
       {
       member.add(m1);
       member.add(m2);
       member.add(m3);
       }
       public ArrayList<members> ls()
       {
           return member;
       }
}


图书课

public class books {
public static void member_stch()
    {
       BAL bl=new BAL();

        System.out.println(bl.ls().size());
    }
}


和主要方法

public static void main(String[] args) {
        Scanner inp=new Scanner(System.in);
        BAL strt=new BAL();

        strt.member_add();
        books.member_stch(); // result 0
        System.out.println(strt.ls().size()); // result 3

}


我从书籍类得到0而不是3,这是数组列表的大小

如果我访问main中的数组列表,我会得到预期的结果

最佳答案

您正在图书类中创建BAL的第二个实例。它是与main中创建的对象不同的对象。您需要将BAL对象从main传递到书中,或者将它的数组列表元素传递给books.member_stch()

主要改变如下:

books.member_stch();


至:

books.member_stch(strt);


并从以下更改member_stch:

public static void member_stch()
{
   BAL bl=new BAL();

    System.out.println(bl.ls().size());
}


至:

public static void member_stch(BAL bl)
{
   System.out.println(bl.ls().size());
}


如果要使BAL和书籍脱钩,使书籍不需要知道BAL是什么,则可以替换

books.member_stch(strt);


与:

books.member_stch(strt.ls);


和:

public static void member_stch(BAL bl)
{
   System.out.println(bl.ls().size());
}


与:

public static void member_stch(ArrayList<Members> memberList)
{
   System.out.println(memberList.size());
}

10-07 19:18