我能够使用以下代码获得类级变量的声明。但我只需要变量名。这是以下代码的输出-[私有布尔标志=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);
}
}
}
你可以试试这个。如果FieldDeclarations中有多个变量,请在内部使用多个for循环。
public void visit(ClassOrInterfaceDeclaration n, Void arg) {
super.visit(n, arg);
for(FieldDeclaration ff:n.getFields())
{
System.out.println(ff.getVariable(0).getName());
}
}
您可以使用以下简单regex:
final String regex = "^((private|public|protected)?\\s+)?.*\\s+(\\w+);$";
然后可以将其编译为模式:
final Pattern pattern = Pattern.compile(regex);
然后最后用于for循环
:
for(final String field : n.getFields()){
// create a regex-matcher
final Matcher matcher = pattern.matcher(field);
// if field matches regex
if(matcher.matches()){
// get the last group -> the fieldName
final String name = matcher.group(matcher.groupCount());
System.out.println("FieldName: " + name);
}
}
我只想得到类级别的变量声明。如何使用javaparser获取声明? 使用javaparser必须获取变量“浏览器”的详细信息,例如浏览器的类型是“KeyWord”
我正在分析的类: 我正在尝试使用MethodDeclaration获取变量名,但无法做到这一点。 我正在尝试获取此is的输出。 verifyAgeLimit():此。名称或名称 verifyAgeLimit():此。名称或名称 showAddress():此。地址或地址 我试图将整个方法转换为sting并读取字符串以找出名称,但它变得太复杂,而且精度也很低。 有什么办法可以解决吗?
这是A.java 我想得到Newa. java 我想使用javaparser添加一个变量。
如何获取到实体类的变量名,用的tkmybatis,没有方法引用,现在写的条件都是字符串"isDeleted"这种,不好维护,有没有方式Dog.的方式拿到变量名称,不想写好多常量,有没有类似Lombok注解的方式去实现
问题内容: 使用Java Reflection,是否可以获得本地变量的名称?例如,如果我有这个: 是否有可能实现一种可以找到这些变量名称的方法,如下所示: 问题答案: 从Java 8开始,可以通过反射获得一些局部变量名称信息。请参阅下面的“更新”部分。 完整的信息通常存储在类文件中。一种编译时优化是删除它,节省空间(并提供一些混淆)。但是,如果存在,则每个方法都有一个局部变量表属性,该属性列出了局
有可能得到变量名吗? 例如: 现在打印结果: 屏幕: