Ho un codice qui:Come ottengo il nodo Superclasses 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();"
}
}
Come potete vedere ho citato l'errore. Sto cercando di creare un quickfix per questo in eclipse jdt ui. Ma non riesco a ottenere il nodo superclasse della classe B che è Class TestOverride.
Ho provato il seguente codice
if(selectedNode instanceof MethodDeclaration) {
ASTNode type = selectedNode.getParent();
if(type instanceof TypeDeclaration) {
ASTNode parentClass = ((TypeDeclaration) type).getSuperclassType();
}
}
Qui ho ottenuto ParentClass come solo TestOverride. Ma quando ho controllato questo non è del tipo TypeDeclaration, non è nemmeno di tipo SimpleName.
La mia query è come ottengo il nodo TestOverride di classe?
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);
}
Avete veramente bisogno il nodo 'TestOverride' se basta inserire il super.foo' ritorno(); 'chiamare? – sevenforce