我正在编写一个用于代码格式化的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){
...
}
...
}
调用ExpressionStatement
的getExpression()
方法来获取语句所表示的表达式。这应该是您正在寻找的MethodInvocation