Ich habe einen Code hier:Wie bekomme ich den Superklassen-Knoten in 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();"
}
}
Wie Sie habe ich den Fehler erwähnt sehen können. Ich versuche, in Eclipse jdt ui einen Quickfix dafür zu erstellen. Aber ich kann den Superklassenknoten der Klasse B, die Class TestOverride ist, nicht abrufen.
habe ich versucht, den folgenden Code
if(selectedNode instanceof MethodDeclaration) {
ASTNode type = selectedNode.getParent();
if(type instanceof TypeDeclaration) {
ASTNode parentClass = ((TypeDeclaration) type).getSuperclassType();
}
}
In ich hier nur als Parent TestOverride bekam. Aber wenn ich dies überprüft habe, ist das nicht vom Typ TypeDeclaration, es ist auch nicht vom Typ SimpleName.
Meine Abfrage ist, wie bekomme ich die Klasse TestOverride Knoten?
EDIT
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);
}
Sich wirklich Sie die 'TestOverride' Knoten benötigen, wenn Sie die' Return super.foo nur einfügen(); 'nennen? – sevenforce