gpt4 book ai didi

java - 获取方法中所有变量名

转载 作者:行者123 更新时间:2023-12-02 08:53:00 26 4
gpt4 key购买 nike

我想检索java文件的所有方法中的所有变量名称。示例 Like a 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 来检索它们。但是,我只能检索类中声明的变量

firstName

lastName

我也希望能够检索在 main 方法中声明的所有变量

firstName
lastName
test

我的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());
}

}

已解决

按照尤金的建议,我现在可以检索所有变量

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 - 获取方法中所有变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60665143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com