クラスA: それぞれがemployeeNameとemployeeNumberを含むEmployeeオブジェクトの塗りつぶされた配列リストが含まれています
クラスBがクラスAのEmployeeオブジェクトの配列リストを参照する変数を作成することは可能ですか?その配列リストを検索するだけです。多分それを印刷します。何も変更しないでください。
これを行う方法の戦略や例はありますか?
クラスA: それぞれがemployeeNameとemployeeNumberを含むEmployeeオブジェクトの塗りつぶされた配列リストが含まれています
クラスBがクラスAのEmployeeオブジェクトの配列リストを参照する変数を作成することは可能ですか?その配列リストを検索するだけです。多分それを印刷します。何も変更しないでください。
これを行う方法の戦略や例はありますか?
パッケージ p1; import java.util.ArrayList; java.util.Collections をインポートします。 java.util.List をインポートします。 パブリック クラス ArrayReference { public static void main(String[] args) { new BB().method(); } } クラスAA { プライベート リスト リスト = 新しい ArrayList(); public List getEmpList() { Collections.unmodifiableList(リスト) を返します。 } } クラスBB { public void メソッド() { リスト list = new AA().getEmpList(); list.add(新しい Emp()); // ここで実行時例外が発生します // リストにオブジェクトを追加しようとします。 // java.lang.UnsupportedOperationException は add の例外です // リスト内のメソッド } } クラス従業員 { }
ArrayList
を公開し、クラスBからゲッターを呼び出すだけのゲッターメソッドをクラスAに記述します
class A {
List myList...;
public List<Employee> getEmployees() {
...
}
}
class B {
A handleToA;
public void search() {
handleToA.getEmployees()...
}
}
もちろん、Class A
との共有を許可するArrayList
必要がありますClass B
。これを行うには、それを要求した他のクラスにを返すpublic
getterメソッドを作成します。Class A
ArrayList
Class A
{
private List<Employee> employees;
public A() {
this.employees = new ArrayList<>();
}
public List<Employee> getEmployees(){ return this.employees; }
}
今すぐClass B
電話で従業員ArrayList
を求めることができますgetEmployees()
Class B
{
private A a;
public B() {
this.a = new A();
// fill the list ...
List<Employee> fromA = a.getEmployees();
}
}
クラスAにゲッターがあり、クラスBで同じものを複製する必要はありません
class A {
List<Employee> employeeList = new ArrayList<Employee>();
public List<Employee> getEmployeeList() {
return employeeList;
}
}
これがあなたが探しているものだと思います:
Class A {
private List<Employees> empList = new ArrayList<Employees>();
//Setters
//Getters
//Load data to empList
}
Class B {
void empList() {
A empClass = new A();
List<Employees> empListFromClassA = new ArrayList<Employees>();
empListFromClassA.addAll(getEmpList()); //Getter from class A
}
それが役に立てば幸い
リストでのみ検索したい場合は、これを使用します:
クラス A { リスト myList...;
public List<Employee> getEmployees() {
return myList.clone();
}
}
これにより、リストのクローンが返されます。クローン元のリストを変更しても同じまま
クラス A で public getter メソッドを作成し、クラス B を介して同じメソッドにアクセスします。
class A{
private List<Employee> employees;
public List getEmployees(){ return this.employees;}
}
class B{
private List<Employee> employees;
public B(){
A a = new A();
employees = a.getEmployees();
}
}
あなたが達成しようとしている現象は「カプセル化」です。Java では、Getter を実装することでこれを実現でき、setter メソッドは Plain Java オブジェクトです。getter と setter は、Java アプリケーション開発において非常に重要な役割を果たします。
このようなソリューションを実装できます
import java.util.ArrayList;
import java.util.List;
class A {
private List<String> empList = new ArrayList<String>();
A(){
empList.add("Employee 1");
empList.add("Employee 2");
empList.add("Employee 3");
empList.add("Employee 4");
empList.add("Employee 5");
}
public List<String> getEmpList() {
return empList;
}
public void setEmpList(List<String> empList) {
this.empList = empList;
}
}
class B {
void empList() {
A empClass = new A();
List<String> empListFromClassA = empClass.getEmpList();
System.out.println("This is what you need ? "+ empListFromClassA.toString());
}
}
public class TEST{
public static void main(String Args[]){
B classb = new B();
classb.empList();
}
}