我有一个接收MethodDeclaration
的函数:
public boolean visit(MethodDeclaration node){ }
我需要遍历树(从node
开始),所以我声明:
Iterator<MethodDeclaration> itr;
在for循环中并像这样使用它:
for(Iterator<MethodDeclaration> itr = node; itr.hasNext();)
所以到目前为止,我的函数看起来像这样:
public boolean visit(MethodDeclaration node)
{
if (node != null)
{
for (Iterator<MethodDeclaration> itr = node; itr.hasNext();)
{
....
}
}
}
itr
声明和itr.hasNext()
正在运行(eclipse标识它们)。但是Iterator<MethodDeclaration> itr = node;
行不是。我显然需要在node
中激活一些返回iterator
类型的方法。但我找不到任何。
我该怎么办?
由于
答案 0 :(得分:0)
node
是一个MethodDeclaration
个对象,我不认为有一种方法可以从`MethodDeclaration本身获取iterator
MethodDeclaration
个。
因此,看起来您只需要使用您正在接收的node
对象...因为Iterator正在visit
方法之外进行迭代。
答案 1 :(得分:0)
假设您正在尝试迭代方法体的每个语句,您可以执行以下操作:
MethodDeclaration node;
//Get node from somewhere
Block methodBody=node.getBody(); // getBody returns body of code as a Block
for(Object a: methodBody.statements()){ //Block.statements returns a list of statements.
System.out.println(a);
}
您可以使用Block.statements()返回的列表上的迭代器执行相同的操作。希望这可以帮助。