[英]How to access array list in different class
我想访问我在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传递到book中,或者将其array list元素传递给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());
}
您在main中创建的BAL
实例将调用member_add()
-这将添加您期望的这三个实例。
您在book类的member_stch()
中创建的BAL
实例不执行此操作。 它不是同一实例,因此为空。 尚不清楚代码的意图是什么,但是如果您希望将这3个成员实例添加到您创建的每个BAL
实例中,请考虑在BAL的构造函数中调用add_member
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.