如何在MethodDeclaration类中返回迭代器类型?

时间:2014-04-18 17:39:12

标签: java eclipse eclipse-jdt

我有一个接收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类型的方法。但我找不到任何。

我该怎么办?

由于

2 个答案:

答案 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()返回的列表上的迭代器执行相同的操作。希望这可以帮助。