Как я могу получить переменную в функции? - PullRequest
0 голосов
/ 19 февраля 2010

Я разрабатываю плагин, в котором я ищу определенный метод. Теперь я хочу отобразить все объявленные и использованные в ней переменные вместе с их типами. Как я могу это сделать? Имя метода имеет тип IMethod. Помощь

Ответы [ 3 ]

1 голос
/ 24 февраля 2010

Если у вас есть CompilationUnit этого IMethod, вы можете использовать ASTParser как , показанное здесь ):

ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(compilationUnit);
parser.setSourceRange(method.getSourceRange().getOffset(), method.getSourceRange().getLength());
parser.setResolveBindings(true);
CompilationUnit cu = (CompilationUnit)parser.createAST(null);
cu.accept(new ASTMethodVisitor());

Тогда вы можете использовать ASTVisitor

cu.accept(new ASTVisitor() {
  public boolean visit(SimpleName node) {
    System.out.println(node); // print all simple names in compilation unit. in our example it would be A, i, j (class name, and then variables)
    // filter the variables here
    return true;
  }
});
1 голос
/ 19 февраля 2010

Что вам нужно, так это API-интерфейс отражения Java.Посмотрите на это: текст ссылки

0 голосов
/ 19 февраля 2010

Вы можете использовать отражение, чтобы получить типы всех параметров, требуемых методом.

Сначала отразите метод с использованием Class, затем используйте `Method.getParameterTypes () '.

...