テキストをに読み込むクラスを作成すると、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...
}
}
}
get メソッドを使用して、クラスから ArrayList を返すことができます。
public class A{
//....
public ArrayList<String> getArray(){
return listToReturn;
}
}
したがって、メソッドを呼び出すだけでよく、変数は静的である必要はありません。
A a = new A();
a.getArray();
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
}
}