如何访问不同类中的数组列表

时间:2018-01-26 18:30:12

标签: java class arraylist

我想访问我在 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,这是书籍类的数组列表的大小

如果我访问主

中的数组列表,我得到了预期的结果

2 个答案:

答案 0 :(得分:2)

您正在图书类中创建第二个BAL实例。它与main中创建的对象不同。您需要将BAL对象从main传递到books或其数组列表元素,作为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()); 
}

with:

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

答案 1 :(得分:1)

您在main中创建的BAL实例调用member_add() - 这会添加您期望的那三个实例。

您在图书类的BAL中创建的member_stch()实例执行此操作。它不是同一个实例,因此它是空的。目前还不清楚代码的意图是什么,但是如果您希望将这3个成员实例添加到您创建的每个BAL实例中,请考虑在BAL的构造函数中调用add_member方法。