0

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

那么当我想要一个不同的类来访问它时,我该怎么做呢?我已经尝试将其设为静态,但我仍然不知道如何在其他类中访问它。

4

3 回答 3

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...
      }
   }
}
于 2013-11-06T20:33:47.883 回答
1

在包含它的类中为您的列表添加一个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
    }
}
于 2013-11-06T20:34:29.243 回答
1

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

public class A{

//....

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

}

因此您只需要调用该方法,并且您的变量不必是静态的:

A a = new A();

a.getArray();
于 2013-11-06T20:35:34.373 回答