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

get メソッドを使用して、クラスから ArrayList を返すことができます。

public class A{

//....

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

}

したがって、メソッドを呼び出すだけでよく、変数は静的である必要はありません。

A a = new A();

a.getArray();
于 2013-11-06T20:35:34.373 に答える
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 に答える