我有班级建筑和子班营房和房子。现在我有一系列像这样定义的房屋和营房:
public House[] arrSHouse;
public Barracks[] arrBarr;
现在我的代码被设计成当我想要创建一个房子时,一个房子将跟随我的鼠标在applet中。这种方式有效:
for(int h = 0; h < arrSHouse.length; h ++)
{
if(arrSHouse[h].held == true)
{
arrSHouse[h].isAlive = true;
arrSHouse[h].xpos = e.getX()-8;
arrSHouse[h].ypos = e.getY()-20;
}
}
但是,我希望通过创建一个允许我输入数组的方法来提高代码效率,例如arrBarr,它是一个Barracks数组,并且执行与上面显示的方法相同的操作。这是我的尝试:
public void buildingFollowMouse(Building[]type, MouseEvent e)
{
for(int a = 0; a < type.length; a ++)
{
if(type[a].held == true)
{
type[a].isAlive = true;
type[a].xpos = e.getX()-8;
type[a].ypos = e.getY()-20;
}
}
}
然而,这不起作用。这种方法的唯一方法就是我说:
public void buildingFollowMouse(House[]type, MouseEvent e)
作为参数并说:
buildingFollowMouse(arrSHouse, e);
这当然意味着为军营方法编写另一种方法。
我只是想知道一种方法,我可以在我的参数中输入Building的子类,并使其工作方式与上面使用House for循环工作的方式相同,我决定制作任何其他建筑物。我怎么能这样做?