首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javaparser模式匹配

Javaparser模式匹配
EN

Stack Overflow用户
提问于 2016-04-25 20:43:20
回答 1查看 310关注 0票数 0

我需要对java解析器生成的AST执行一些操作。我的问题是,我想检查类初始化周期问题是否存在。

一个例子是,

代码语言:javascript
复制
class mark1 {
  public static final int x = mark2.p * 5;
  //Do some operations here
} 

class mark2 {
 public static final int p = mark1.x + 100;
 //Do some operations here
}

类的初始化顺序可能会有所不同,这会导致计算mark1.x和mark2.p的不同值。我正在尝试使用AST生产的javaparser来实现它,但是没有得到一个可行的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2016-04-25 22:08:06

使用JavaParser,您可以轻松获得所有静态字段和静态初始值设定项。

我看到的问题是,你需要解析引用。例如,您需要理解"mark2.p“和"mark1.x”指的是其他类的静态字段。从AST的角度来看,它们是字段访问,但仅有AST和JavaParser不能告诉您该特定字段是静态的。为此,您需要使用诸如https://github.com/ftomassetti/java-symbol-solver/之类的符号求解器,或者您可以自己构建逻辑。例如,您可能需要查看导入,查看是否导入了类mark1,或者在与mark2相同的包中是否存在一个名为mark1的类。这样做,您可以识别出mark1是一个类的名称,并在该类中查找符号p。然后,您可以找到它,并注意到它是一个静态字段。

来源:我是一个JavaParser贡献者

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36840953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档