Sto lavorando su un'applicazione Java che utilizza JavaParser. Non sono sicuro di come ottenere il nome della classe della parola chiave Super utilizzata nel corpo di un metodo. Ad esempio, devo verificare se la parola chiave Super nel codice seguente si riferisce alla classe A.
Ho testato le routine JavaParser (1, 2 e 3), ma nessuna ha funzionato; hanno restituito tutti null.
Questo sito ha consigliato di aggiungere JavaSymbolSolver alla configurazione del parser, tuttavia questo non ha risolto il mio problema. Quindi ho cercato JavaSymbolSolver e ho scoperto che è necessario per risolvere i riferimenti e rilevare le relazioni tra i nodi. Qualcuno potrebbe per favore aiutarmi con questo?
Codice:
class A {
public void bar(){...}
}
class B extends A {}
class C extends B {
void foo(){
super.bar() // I want to find that the super keyword is referred to Class A.
}
}
Codice:
MethodCallExpr methodCallExpr = ...
Optional<Expression> scope = methodCallExpr.getScope();
SuperExpr superExp = scope.get().asSuperExpr();
1. superExp.findAll(ClassOrInterfaceDeclaration.class); and
2. superExp.getTypeName();
3. superExp.getClassExpr(); //I do not know why this method also returns null