Есть ли способ получить информацию о конструкторе, используя JavaParser или какой-либо другой API? - PullRequest
1 голос
/ 31 марта 2012

Мне нужно иметь возможность получить информацию о конструкторе исходного файла, например, номер строки beging и, возможно, некоторые строки, которые находятся в конструкторе.Я использую аналогичную идею для методов файла, чтобы иметь возможность получить начальную и конечную строки и имена методов.Для этого я использую JavaParser, как описано в здесь .

. Я не смог найти способ использовать JavaParser для моей цели.Есть ли способ получить подобную информацию о конструкторе?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2014

Вы можете получить информацию о конструкторе так же, как вы делаете это с объявлениями методов:

CompilationUnit cu = JavaParser.parse(file);
    List<TypeDeclaration> typeDeclarations = cu.getTypes();
    for (TypeDeclaration typeDec : typeDeclarations) {
        List<BodyDeclaration> members = typeDec.getMembers();
        if(members != null) {
            for (BodyDeclaration member : members) {
                if (member instanceof ConstructorDeclaration) {
                    ConstructorDeclaration constructor = (ConstructorDeclaration) member;
                    //Put your code here
                    //The constructor instance contains all the information about it. 

                    constructor.getBeginLine(); //begin line
                    constructor.getBlock(); //constructor body
                }
            }
        }
    }
0 голосов
/ 02 апреля 2012

Вы должны изучить использование Java perser из Eclipse Java Development Tools (JDT). Существует превосходное учебное пособие с примерами кода от Ларса Фогеля: Eclipse JDT - Абстрактное синтаксическое дерево (AST) и Java Model - Учебное пособие о том, как анализировать код Java.

Вы можете получить IMethod для каждого конструктора, а затем вызвать getSourceRange() и getSource() для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...