0

1つのファイルに私はこれを持っています:

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のイテレータを取得してすべての要素を調べ、各要素でFileSystemNodeに実装されているメソッド「getSize」を呼び出す方法です。どうもありがとうございました。

4

2 に答える 2

1

あなたはこのようなことをしたいかもしれません:

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

foreachループを使用できるように、 IterableDirectoryNodeインターフェースを実装することもできます。

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 に答える