1

クラスA: それぞれがemployeeNameとemployeeNumberを含むEmployeeオブジェクトの塗りつぶされた配列リストが含まれています

クラスBがクラスAのEmployeeオブジェクトの配列リストを参照する変数を作成することは可能ですか?その配列リストを検索するだけです。多分それを印刷します。何も変更しないでください。

これを行う方法の戦略や例はありますか?

4

8 に答える 8

2

    パッケージ 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 の例外です
            // リスト内のメソッド

        }
    }

    クラス従業員 {

    }

于 2013-02-19T10:57:38.223 に答える
1

ArrayListを公​​開し、クラスBからゲッターを呼び出すだけのゲッターメソッドをクラスAに記述します

class A { 
    List myList...;

    public List<Employee> getEmployees() { 
    ...
    }
}

class B { 
    A handleToA;

    public void search() { 
        handleToA.getEmployees()...
    }

}
于 2013-01-29T06:00:54.510 に答える
1

もちろん、Class Aとの共有を許可するArrayList必要がありますClass B。これを行うには、それを要求した他のクラスにを返すpublic getterメソッドを作成します。Class AArrayList

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();  
   }
}
于 2013-01-29T06:01:56.727 に答える
1

クラスAにゲッターがあり、クラスBで同じものを複製する必要はありません

class A {
    List<Employee> employeeList = new ArrayList<Employee>();

    public List<Employee> getEmployeeList() {
        return employeeList;
    }   
}
于 2013-01-29T06:02:51.490 に答える
1

これがあなたが探しているものだと思います:

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
}

それが役に立てば幸い

于 2013-01-29T06:03:51.950 に答える
1

リストでのみ検索したい場合は、これを使用します:

クラス A { リスト myList...;

public List<Employee> getEmployees() { 
    return myList.clone();
}

}

これにより、リストのクローンが返されます。クローン元のリストを変更しても同じまま

于 2013-01-29T06:04:44.753 に答える
1

クラス 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();
 }

}
于 2013-01-29T06:13:35.550 に答える
1

あなたが達成しようとしている現象は「カプセル化」です。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();
    }
}
于 2013-01-29T06:17:56.597 に答える