2010-02-19 3 views
0

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

+1

Давайте проясним: Вы спрашиваете о Java, или о интерфейсе Eclipse 'IMethod'? http://www.jarvana.com/jarvana/view/org/eclipse/jdt/doc/isv/3.2.1-r321_v20060907/isv-3.2.1-r321_v20060907.jar!/reference/api/org/eclipse/jdt /core/IMethod.html –

+0

Eclipse's IMethod type.sorry моя ошибка – Steven

ответ

1

Если у вас есть CompilationUnit этого IMethod, вы могли бы использовать ASTParser в illustrated here):

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

Что вам нужно, это API отражения Java. Посмотрите на это: link text

+0

Нет, я уверен, что он говорит об интерфейсе 'IMethod' Eclipse: http://www.jarvana.com/jarvana/view/org/eclipse /jdt/doc/isv/3.2.1-r321_v20060907/isv-3.2.1-r321_v20060907.jar!/reference/api/org/eclipse/jdt/core/IMethod.html И независимо от того, что отражение не говорит вам о переменных объявленный внутри метода. –

0

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

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

Смежные вопросы