0

次の点で少し混乱しています。

class Foo{
private ArrayList<Obj1> obj1List;
private ArrayList<Obj2> obj2List;


/* constructor */
...

public void push(?){

if(the object is of type Obj1)
    push into obj1List (object)
if(the object is of type Obj2)
    push into obj2List (object)

}

インスタンスオブ(キャスト)または(オブジェクトobj)をそのパラメーターとして使用せずに、オブジェクトタイプ自体を識別するように、プッシュ関数でどのように行うことができますか?どのアレイリストにプッシュするかを知る必要があります!

4

2 に答える 2

4

最も簡単な方法は、2 つのオーバーロードを使用することです。

public void push(Obj1 obj) {
  objList1.add(obj);
}

public void push(Obj2 obj) {
  objList2.add(obj);
}
于 2012-12-09T17:47:23.163 に答える
1

各オブジェクト タイプに 1 つずつ、2 つのメソッドを使用するだけで、プログラムは最も具体的なメソッドを自動的に使用します。

public void push(Obj1 obj){
    obj1List.add(obj);
}

public void push(Obj2 obj){
    obj2List.add(obj);
}
于 2012-12-09T17:47:06.683 に答える