允许ArrayList在不同的类中使用

时间:2013-11-06 20:31:11

标签: java arraylist

如果我创建一个将文本读入ArrayList的类。如何在其他类中访问此ArrayList?我如何在类中声明ArrayList?

然后,当我想要一个不同的类来访问它时,我该如何去做呢?我试过让它静态但我仍然不知道如何在其他类中访问它。

3 个答案:

答案 0 :(得分:3)

将其声明为成员,例如

public class A {
   public final List<MyObj> list = new ArrayList<MyObj>();
}

然后

A a = new A();
a.list; // there you go

(请注意,我已将其声明为List,而不是ArrayList。这是一个实施问题,我可以选择将其公开为Collection。它是也标记为final,因为我不想无意中更改它。如果需要,我可以稍后恢复该决定。

最好将其设为私有,并通过访问者访问它,例如

public class A {
   private final List<MyObj> list = new ArrayList<MyObj>();

   public List<MyObj> getList() {
      return list;
   }
}

A a = new A();
a.getList();

虽然你班级以外的人可以修改它(!)。所以你可以在暴露它之前复制它,或者用Collections.unmodifiableList()包装它。

最好仍然完全隐藏它并让类A为你做一些事情(可能涉及该列表 - 这是一个实现细节)

public class A {
   private final List<MyObj> list = new ArrayList<MyObj>();

   public void doSomethingForMe() {
      for (MyObj obj : list) {
         // do something...
      }
   }
}

答案 1 :(得分:1)

在包含它的类中为列表添加public getter。在要使用列表的类中,创建包含列表的类的实例,并通过调用getter方法获取列表。

class A {
    List<String> list = new ArrayList<>();

    public List<String> getList() {
        return list;
    }
}


Class B {
    public vois useClassAList() {
        A a = new A();
        List<String> list = a.getList();
        // do what ever you want with the list
    }
}

答案 2 :(得分:1)

您可以使用get方法从类中返回ArrayList。

public class A{

//....

public ArrayList<String> getArray(){
return listToReturn;
}

}

因此你只需要调用方法,你的变量不必是静态的:

A a = new A();

a.getArray();