0

在一个文件中,我有这个:

public DirectoryNode(String n, List<FileSystemNode> c) {
...
private List<FileSystemNode> nodes;
...
public Iterator<FileSystemNode> iterator() { return nodes.iterator(); }
...}

在另一个文件中,我有这个:

public class SizeVisitor implements FileSystemVisitor<Integer>
{...
    public Integer visitDirectory(DirectoryNode d){
    }
}

我的问题是,我如何在 visitDirectory 中创建一个 for 循环,它将获取 d 的迭代器,并遍历所有元素,然后在每个元素上调用方法“getSize”,该方法在 FileSystemNode 中实现?非常感谢您的帮助。

4

2 回答 2

1

你可能想做这样的事情:

public Integer visitDirectory (DirectoryNode d) {
  for ( Iterator<FileSystemNode> iterator = d.iterator(); iterator.hasNext(); ) {
    FileSystemNode fsn = iterator.next();
    fsn.getSize();
  }
}

您还可以DirectoryNode实现Iterable接口,以便使用 foreach 循环:

public Integer visitDirectory (DirectoryNode d) {
  for ( FileSystemNode fsn : d) {
    fsn.getSize();
  }
}
于 2012-12-15T21:44:58.433 回答
1

像这样:

public Integer visitDirectory(DirectoryNode d){
 Iterator<FileSystemNode> i = d.iterator();
 while (i.hasNext()) {
   FileSystemNode fsn = i.next();
   fsn.getSize()
 }
}

如果您在其中实现Iterable接口,DirectoryNode还可以使用 for-each 循环:

public Integer visitDirectory(DirectoryNode d){
  for (FileSystemNode fsn : d) {
    fsn.getSize()
  }
}
于 2012-12-15T21:46:37.053 回答