Me gustaría recuperar todos los nombres de las variables en todos los métodos de un archivo Java. Ejemplo Como un Person.java contiene
class Person {
private String firstName;
private String lastName;
public static void main() {
String test = "test";
Person p1 = new Person();
p1.setName("John");
}
public void setName(String name) {
this.firstName = name;
}
}
me gustaría ser capaz de imprimir todas las variables declaradas. He intentado usar javaparser para recuperarlos. Sin embargo, sólo puedo recuperar variables declaradas en la clase que es
firstName
lastName
Quiero ser capaz de recuperar todas las variables declaradas en el método principal, así
firstName
lastName
test
Mi método es javaparser
public static void getVariables(String inputFilePath) {
try {
CompilationUnit cu = StaticJavaParser.parse(new File(inputFilePath));
cu.findAll(FieldDeclaration.class).forEach(field -> {
field.getVariables().forEach(variable -> {
System.out.println(variable.getName());
variable.getInitializer().ifPresent(initValue ->
System.out.println(initValue.toString()));
});
});
} catch (FileNotFoundException fe) {
System.out.println(fe.getMessage());
} catch (IOException e){
System.out.println(e.getMessage());
}
}
resuelto
Como siguiente sugerencia de Eugene, soy capaz de recuperar todas las variables ahora
public static void getVariables(String inputFilePath) {
try {
CompilationUnit cu = StaticJavaParser.parse(new File(inputFilePath));
cu.findAll(VariableDeclarator.class).forEach(variable -> {
System.out.println(variable);
});
} catch (FileNotFoundException fe) {
} catch (IOException e) {
}
}
Usted está de paso FieldDeclaration.class
en CompilationUnit
el método () 's findAll. Así que, como se le preguntó, le consigue todos los campos declarados.
Si desea una lista de todas las variables declaradas, el uso VariableDeclarator.class
de un mismo paquete - que te llevará a todos aquellos, incluidos los declarados como campos.