【问题标题】:How to access array list in different class如何访问不同类中的数组列表
【发布时间】:2018-01-26 18:30:12
【问题描述】:

我想访问我在 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 中访问数组列表,我会得到预期的结果

【问题讨论】:

  • 确保发布编译后的代码
  • 我这里放了简化的类..编译后的版本有很多不相关的东西..
  • 那么,这个问题可能无法回答您的问题。有很多未解决的变量。

标签: java class arraylist


【解决方案1】:

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

在 main 中像这样改变:

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和books解耦,让books不需要知道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()); 
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多