我有一堆表格视图,其中有代码重复。他们曾经直接继承AbstractView类。然后我让它们继承了AbstractListView(它将继承AbstractView),这将成为保存这些表的所有公共属性的新类。多级继承和foreach Java循环
自从我做了改变,此环奇怪的行为:
for (AbstractViewPanel view : registeredViews) {
view.modelPropertyChange(evt);
}
这里是ArrayList的:registeredViews:
private ArrayList<AbstractViewPanel> registeredViews;
我已经运行调试器和registeredViews ArrayList中拥有所有的包括桌子的意见。出于某种原因,它停滞在集合中最后一个直接继承的视图中,并完全跳过它们。用于直接继承
所有我的看法:
public class someView extends AbstractViewPanel
现在,因为我改变了一些看法是这样的:
public class someOtherView extends AbstractListView
这里的AbstractListView:
public abstract class AbstractListView extends AbstractViewPanel
这里的AbstractViewPanel
public abstract class AbstractViewPanel extends JPanel {
public abstract void modelPropertyChange(PropertyChangeEvent evt);
}
这个循环根本不会覆盖任何继承AbstractListView的东西,但我会假设最后所有的视图都是AbstractView类型的。
UPDATE 我设法找到它仅仅涉及改变环路解决方法:
for (int i = 0; i < registeredViews.size(); i++)
{
registeredViews.get(i).modelPropertyChange(evt);
}
我想知道为什么,虽然在foreach循环风格是让我头疼。
如何定义'AbstractViewPanel'? – nhahtdh
谁? arrayList是Java中的一个常规实现,我还没有实现任何自定义迭代器模式。虽然现在我怀疑线程问题,但循环并没有结束,它从未到达函数的末尾。 –
在'registeredViews'声明中指定了什么类型的参数。 – trashgod