2014-11-06 155 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