通过eclipse AST搜索MethodInvocation

时间:2014-05-10 18:50:55

标签: java eclipse abstract-syntax-tree

我正在编写一个用于代码格式化的Eclipse插件,我需要检测AST中的方法调用,但我似乎无法做到这一点。 我目前使用getNodeType()但它返回EXPRESSION_STATEMENT,当我调试时,我看到它的表达式类型确实是一个方法调用,但它仍然返回一个EXPRESSION_STATEMENT类型。

(我知道我错过了几个检查,但目前无关紧要,假设Then语句和Else语句只是system.out.println()的一个命令)

有什么想法吗?

谢谢!

static boolean treatIfMethod(final AST ast, final ASTRewrite r, final IfStatement node){
  final ASTNode thenMethod=(ASTNode)((Block)node.getThenStatement()).statements().get(0),
          elseMethod=(ASTNode)((Block)node.getElseStatement()).statements().get(0);
  if (thenMethod.getNodeType()==ASTNode.METHOD_INVOCATION &&
          elseMethod.getNodeType()==ASTNode.METHOD_INVOCATION){
      ...
      }
 ...
}

1 个答案:

答案 0 :(得分:0)

调用getExpression()的{​​{1}}方法获取语句所代表的表达式。这应该是您正在寻找的ExpressionStatement