如果我创建一个将文本读入ArrayList
. 如何在其他类中访问此 ArrayList?我在类中声明 ArrayList 是什么?
那么当我想要一个不同的类来访问它时,我该怎么做呢?我已经尝试将其设为静态,但我仍然不知道如何在其他类中访问它。
将其声明为成员,例如
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...
}
}
}
在包含它的类中为您的列表添加一个public
吸气剂。在要使用列表的类中,创建包含列表的类的实例,并通过调用 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
}
}
您可以使用 get 方法从类中返回 ArrayList。
public class A{
//....
public ArrayList<String> getArray(){
return listToReturn;
}
}
因此您只需要调用该方法,并且您的变量不必是静态的:
A a = new A();
a.getArray();