我这里有一个代码:如何获取Eclipse jdt ui中的超类节点?
public class TestOverride {
int foo() {
return -1;
}
}
class B extends TestOverride {
@Override
int foo() {
// error - quick fix to add "return super.foo();"
}
}
正如你可以看到我已经提到的错误。我正在尝试在eclipse jdt ui中为此创建一个quickfix。但我无法获得Class TestOverride的类B的超类节点。
我尝试下面的代码
if(selectedNode instanceof MethodDeclaration) {
ASTNode type = selectedNode.getParent();
if(type instanceof TypeDeclaration) {
ASTNode parentClass = ((TypeDeclaration) type).getSuperclassType();
}
}
在这里我得到了父类,因为只有TestOverride。但是当我检查这不是TypeDeclaration类型时,它也不是SimpleName类型。
我的查询是如何得到类TestOverride节点?
编辑
for (IMethodBinding parentMethodBinding :superClassBinding.getDeclaredMethods()){
if (methodBinding.overrides(parentMethodBinding)){
ReturnStatement rs = ast.newReturnStatement();
SuperMethodInvocation smi = ast.newSuperMethodInvocation();
rs.setExpression(smi);
Block oldBody = methodDecl.getBody();
ListRewrite listRewrite = rewriter.getListRewrite(oldBody, Block.STATEMENTS_PROPERTY);
listRewrite.insertFirst(rs, null);
}
你真正需要的'TestOverride'节点,如果你只需要插入'返回super.foo();'打电话? – sevenforce