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)

}

我怎样才能用 Push 函数做这样的事情,它会识别对象类型本身,而不使用 instanceof(强制转换)或使用(Object obj)作为其参数?我需要它知道要推送到哪个数组列表!

4

2 回答 2

4

最简单的方法是有两个重载:

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

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

您可以简单地使用 2 种方法,每种对象类型一种,您的程序将自动使用最具体的方法:

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

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