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