我从未对如此基本的事情感到困惑。在这个例子中,我有一个for循环,它使用ArrayList作为抽象类。该类包含一些不同的更新方法,所有这些方法都用于扩展抽象类并覆盖方法的不同类。 (我没有包含所有更新方法,因为我认为没有必要,你应该能够猜出它们是什么)
public abstract class Objs extends JComponent{
private int xpos;
private int ypos;
private int size;
private boolean ai;
public void update(){
}
public boolean getAI(){
return ai;
}
public void update(int y, Container p){
}
public void update(int p, int x){
}
所以,在for循环中我有:
for(int i = 0; i < objs.size() - 1; i++){
objs.get(i).update(getParent());
objs.get(i).update(getHeight(),(int)(objs.get(0).getYpos() - (.5 * objs.get(0).getS())));
if(!(objs.get(i).getAI())){
if(m[0])
objs.get(i).update(1, getParent());
if(m[1])
objs.get(i).update(-1, getParent());
}
}
我有三种不同的更新方法。第一个完全正常,我的第一个类是扩展抽象类。但是,我有第二个类使用第二个更新方法,并且由于某种原因,似乎没有为该类调用该方法。我老实说不知道为什么不!我为测试做的是在for循环之外,使用正确的索引手动调用方法,它可以工作。所以我唯一的假设是For循环由于某种原因没有调用该方法。有什么想法吗?
答案 0 :(得分:0)
由于两个更新方法在循环外部调用时工作正常,但第二个在第一个调用之后无效,我建议你先将第二个更新方法放在第一个之前,看看它是否只是一个问题没有调用第二个更新方法。有可能单独解决问题。
但是,如果这不能解决问题,或者第二个更新方法依赖于第一个更新方法,则只需在第一个更新方法之后放置一个print语句。如果该print语句没有打印,那么计算机很可能在第一个更新方法中被挂起并且没有进展到第二个更新方法。但是,如果打印语句打印,我唯一的猜测是第一个更新方法中的某些内容正在影响第二个更新方法。在这种情况下,请查看第一个更新方法,并检查可能导致与第二个更新方法中的任何内容冲突的任何代码。
我知道这不一定是你的问题的万无一失的解决方案,但它应该帮助你找出造成问题的原因。可悲的是,没有实际的代码,我不能做更多。无论如何,好好搞清楚你的问题,我希望这有帮助!