Domanda Trova il nome della classe della parola chiave Super in JavaParser

OliWan

Utente Bronze
15 Luglio 2022
20
15
0
27
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.
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.
    }
}
Ho testato le routine JavaParser (1, 2 e 3), ma nessuna ha funzionato; hanno restituito tutti null.
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
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?