我有以下代码:
package testpackage;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestClass
{
private static int a = 0;
public void test1()
{
int b = a + 1;
int c = 3;
}
}
我用一个ASTVisitor
对象解析它:
final CompilationUnit compilationUnit = (CompilationUnit) parser.createAST(null);
compilationUnit.accept(new ASTVisitor()
{
@Override
public boolean visit(Assignment node)
{
System.out.println("assignment");
return false;
}
@Override
public boolean visit(TypeDeclaration node)
{
System.out.println("type");
return true;
}
@Override
public boolean visit(MethodDeclaration node)
{
System.out.println("method");
return true;
}
//more code here
};
解析工作查找类型和方法声明,但不能查找赋值。在我看来,我的示例代码中有3个赋值。但是为什么ASTVisitor对象不能识别它们呢?
答案 0 :(得分:-1)
您提到的所有三个表达式都是不是赋值表达式。这就是为什么不执行相应的访问的原因。
为了澄清它,第一个表达式是FieldDeclaration
。另外两个是VariableDeclarationStatement
个。这三个都包含VariableDeclarationFragment
s。
这意味着你应该添加以下方法来查看解析过程:
public boolean visit(FieldDeclaration node) {
System.out.println("field declaration: " + node);
return true;
}
public boolean visit(VariableDeclarationStatement node) {
System.out.println("variable declaration: " + node);
return true;
}