我对以下内容有些疑惑:
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)作为其参数?我需要知道要推进哪个arraylist!
答案 0 :(得分:4)
最简单的方法是有两个重载:
public void push(Obj1 obj) {
objList1.add(obj);
}
public void push(Obj2 obj) {
objList2.add(obj);
}
答案 1 :(得分:1)
您可以简单地使用两种方法,每种对象类型一种,并且您的程序将自动使用最具体的方法:
public void push(Obj1 obj){
obj1List.add(obj);
}
public void push(Obj2 obj){
obj2List.add(obj);
}