<分区>
所以我一直在查看一些我理解用于 foreach 循环的 java 代码,但它似乎过于复杂。
我有一个包含属性的 Control.java 文件。
我有一个 Controls.java 文件,它使用 Iterator 并将 Control 作为数据类型。
public class Controls implements Iterable<Control>{
protected ArrayList<Control> controls;
public Controls()
{
controls = new ArrayList<Control>();
}
public Controls(ArrayList<Control> controls)
{
this.controls = controls;
}
public ArrayList<Control> value()
{
return controls;
}
public void add(Control ctrl)
{
this.controls.add(ctrl);
}
public void add(Controls ctrls)
{
for(Control ctrl : ctrls)
{
this.controls.add(ctrl);
}
}
public void remove(Control ctrl)
{
if(this.controls.contains(ctrl))
{
this.controls.remove(ctrl);
} else
{
for (Control c: this.controls)
{
if(c instanceof ContainerControl)
{
((ContainerControl)c).controls.remove(ctrl);
}
}
}
}
public Control get(String name)
{
//stuff here
}
@Override
public Iterator<Control> iterator() {
return controls.iterator();
}
}
其他文件这样使用它:
public void dumpInstantiation(StringBuffer buf)
{
for(Control control : controls)
{
control.dumpInstantiation(buf);
}
}
据我了解,这只是一个 foreach 循环,在迭代每个控件时具有添加或删除(或调用任何其他方法)的额外好处。作为一个 Java 新手,有几个问题浮现在脑海中:
- 有没有更简单的方法来实现它?这是通常的做法吗?
- 这样做还有其他好处吗?
- 没有 ArrayList 和 Iterator 有没有办法做到这一点?