如果我创建一个将文本读入ArrayList
的类。如何在其他类中访问此ArrayList?我如何在类中声明ArrayList?
然后,当我想要一个不同的类来访问它时,我该如何去做呢?我试过让它静态但我仍然不知道如何在其他类中访问它。
答案 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();