Я использую https://github.com/javaparser/javaparser для анализа исходного кода Java
Я перепробовал много методов для анализа внутреннего класса; как это:
class A {
int x;
public void method2() {...}
class B {
int number;
public void methods() {...}
}
}
Я пытаюсь проанализировать класс B и его переменные и методы, но мне это не удалось.
Есть ли какой-нибудь пример, показывающий, как получить класс B?
Я могу разобрать имя метода класса A и содержимое или содержимое переменных, например:
CompilationUnit cu = JavaParser.parse(in);
ClassVisitor classVisitor = new ClassVisitor();
classVisitor.visit(cu, null);
class ClassVisitor extends VoidVisitorAdapter<Void> {
@Override
public void visit(ClassOrInterfaceDeclaration n, Void arg) {
System.out.println(n.getFields());
// get class methods
for(MethodDeclaration method : n.getMethods()) {
System.out.println("Name :" + method.getName());
System.out.println("Body :" + method.getBody().get());
}
}
}
}
Но я пытаюсь разобрать переменную класса B и метод, не удалось!
попробуйте CompilationUnit.getTypes (), например:
CompilationUnit cu = JavaParser.parse(in);
for(TypeDeclaration<?> type : cu.getTypes()) {
log.info("Type Name :{}", type.getName());
}
результат:
n.s.dictionary.parse.JavaCodeParse: Имя типа: A
Не разрешено до класса B