在一个文件中,我有这个:
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"?非常感谢您的帮助。
你可能想做这样的事情:
public Integer visitDirectory (DirectoryNode d) {
for ( Iterator<FileSystemNode> iterator = d.iterator(); iterator.hasNext(); ) {
FileSystemNode fsn = iterator.next();
fsn.getSize();
}
}
您还可以使DirectoryNode
实现可迭代接口,以便可以使用foreach循环:
public Integer visitDirectory (DirectoryNode d) {
for ( FileSystemNode fsn : d) {
fsn.getSize();
}
}
像这样:
public Integer visitDirectory(DirectoryNode d){
Iterator<FileSystemNode> i = d.iterator();
while (i.hasNext()) {
FileSystemNode fsn = i.next();
fsn.getSize()
}
}
如果在DirectoryNode
中实现 Iterable
接口,则还可以使用 for-each 循环:
public Integer visitDirectory(DirectoryNode d){
for (FileSystemNode fsn : d) {
fsn.getSize()
}
}