2014-11-06 73 views
1

假设变量i初始化,如:Java的JDT检测简单的语句

int i = 0; 

我试图发现简单的Java变量的变化,如:

i=i+1; 

这可以使用访问者模式来实现与JDT一样:

public boolean visit(XXXXXXX node) { 

    //something here 


} 

但是,我不确定XXXXX的名称,它会给我在第二个语句代码示例。我已经浏览了http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FASTNode.html,但它确实很大,到目前为止我找不到它。

回答

0

“i = i + 1”是ExpressionStatement(您的XXXXXXX)。内部表达式的类型为Assignment,您可以在右侧检查左侧的运算符SimpleName以及InfixExpression

分析代码的好工具是ASTView。它可以显示编辑器中标记的任何代码的AST。您可以从更新站点将其安装到Eclipse中。

0

为什么不使用setter来实现类似的结果?

int i = 0; 

public void setI(int _i) { 
    this.i = _i; 
    // execute visit() code here 
} 

setI(i++); 

尽管我不知道需要监视变量值更改的上下文,但这似乎是一个快速替代方案。

+0

i + 1等代码仅仅是一个示例。该程序应该能够运行在任何定义为X = Y +/-/*/etc Z的代码上。换句话说,任何变量变化如字符串s; String s =“”+“hi”; – John 2014-11-06 21:02:25