【发布时间】:2018-06-04 12:07:31
【问题描述】:
我能够使用以下代码获取类级别变量的声明。但我只需要变量名。这是我为以下代码得到的输出 - [private boolean flag = true;]
import com.github.javaparser.JavaParser;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
import java.io.FileInputStream;
public class CuPrinter{
public static void main(String[] args) throws Exception {
// creates an input stream for the file to be parsed
FileInputStream in = new FileInputStream("C:\\Users\\arosh\\IdeaProjects\\Bot_Twitter\\src\\MyBot.java");
CompilationUnit cu;
try {
// parse the file
cu = JavaParser.parse(in);
} finally {
in.close();
}
cu.accept(new ClassVisitor(), null);
}
private static class ClassVisitor extends VoidVisitorAdapter<Void> {
@Override
public void visit(ClassOrInterfaceDeclaration n, Void arg) {
/* here you can access the attributes of the method.
this method will be called for all methods in this
CompilationUnit, including inner class methods */
System.out.println(n.getFields());
super.visit(n, arg);
}
}
}
【问题讨论】:
-
您可能可以遍历
n.getFields()并检索名称 -
没有。我想解析许多 java 文件并找到它们的类级变量。所以我不知道迭代时的变量名、修饰符、类型是什么。我想要一种获取类级别变量的通用方法。
-
如前所述,
n.getFields()将返回一个自定义对象数组,甚至是一个全新的对象。然后可以对其进行一般迭代 -
n.getFields() 可以类似于 [private boolean flag = true;] 或 [private boolean flag;] 或 [boolean flag = true;]。所以在这种情况下,在编码时我怎么知道数组的哪个元素将是变量名。例如,第一个是第三个元素,第二个是第二个元素。
-
n.getFields()的类类型是什么?
标签: java javaparser