获取方法中的所有变量名
Get all variable names in methods
我想检索 java 文件的所有方法中的所有变量名。例如 Person.java 包含
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;
}
}
我希望能够打印出声明的所有变量。我试过使用 javaparser 来检索它们。
但是,我只能检索在 class 中声明的变量,即
firstName
lastName
我也希望能够检索在 main 方法中声明的所有变量
firstName
lastName
test
我的java解析器方法是
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());
}
}
已解决
按照 Eugene 的建议,我现在可以检索所有变量了
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) {
}
}
您正在将 FieldDeclaration.class
传递给 CompilationUnit
的 findAll() 方法。因此,正如所要求的那样,它会为您提供所有已声明的字段。
如果您想列出所有已声明的变量,请使用同一包中的 VariableDeclarator.class
- 它会为您提供所有这些,包括声明为字段的变量。
我想检索 java 文件的所有方法中的所有变量名。例如 Person.java 包含
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;
}
}
我希望能够打印出声明的所有变量。我试过使用 javaparser 来检索它们。 但是,我只能检索在 class 中声明的变量,即
firstName
lastName
我也希望能够检索在 main 方法中声明的所有变量
firstName
lastName
test
我的java解析器方法是
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());
}
}
已解决
按照 Eugene 的建议,我现在可以检索所有变量了
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) {
}
}
您正在将 FieldDeclaration.class
传递给 CompilationUnit
的 findAll() 方法。因此,正如所要求的那样,它会为您提供所有已声明的字段。
如果您想列出所有已声明的变量,请使用同一包中的 VariableDeclarator.class
- 它会为您提供所有这些,包括声明为字段的变量。