当前位置: 首页 > 知识库问答 >
问题:

如何使用javaparser获取类的方法内部使用的变量名

龙毅
2023-03-14

我正在分析的类:

public class Users{
    private String name = "Jacob";
    private String address = "711 11th Ave, New York";
    private int age = 28;
    
    public String verifyAgeLimit() {
        String msg = (this.age < 16) ? " is not allwed to use it." : " is Allwed to use it.";   
        return this.name+msg;
    }
    
    public String showName() {
        return "User name is:"+this.name;
    }
    
    public String showAddress() {
        return this.address;
    }

    public String hello() {
        return "Hello World";
    }
}

我正在尝试使用MethodDeclaration获取变量名,但无法做到这一点。

public void visit(MethodDeclaration n, Object arg) {        
   System.out.println(n.getName().toString());//It displays the full method
   super.visit(n, arg);
}

我正在尝试获取此is的输出。

verifyAgeLimit():此。名称或名称

verifyAgeLimit():此。名称或名称

showAddress():此。地址或地址

我试图将整个方法转换为sting并读取字符串以找出名称,但它变得太复杂,而且精度也很低。

有什么办法可以解决吗?

共有1个答案

林浩漫
2023-03-14

所用变量的名称由NameExpr节点保存,字段由FieldAccessExpr节点保存。为它们添加一个访问者,或者以其他方式递归到它们。

 类似资料:
  • 我能够使用以下代码获得类级变量的声明。但我只需要变量名。这是以下代码的输出-[私有布尔标志=true;]

  • 我只想得到类级别的变量声明。如何使用javaparser获取声明? 使用javaparser必须获取变量“浏览器”的详细信息,例如浏览器的类型是“KeyWord”

  • 是否可以获取不带注释的方法语句列表,我使用了,这是输出 我只想声明结果是这样的

  • 这是A.java 我想得到Newa. java 我想使用javaparser添加一个变量。

  • 问题内容: 如何在我的匿名内部子类中获取传递给此方法的值? 我收到此错误: 无法在以其他方法定义的内部类中引用非最终变量userID 我很确定我不能将其赋值为final,因为它是一个未知值的变量。我听说这种语法确实以某种方式保留了作用域,所以我认为必须有一个我不太了解的语法技巧。 问题答案: 当然,您可以将其分配为final-只需将该关键字放入参数的声明中即可: 我不确定这是一个未知值的变量是什么

  • Android Studio说一个变量必须声明为final,所以你可以在同一个类的多个方法中使用它。但是还有别的方法吗,因为我必须修改这个变量,一旦你声明它是final,你就不能更改它了。 这个变量在void onComplete(whatever)内部,我需要在外部使用它。我们如何处理这样的事情而不声明变量final?