我這裏有一個代碼:如何獲取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