java - 如何找出java类的继承树的深度?

标签 java parsing inheritance static javaparser

我正在制作一个分析器来计算 java 类的继承树的深度。

我正在使用 javaparser 从 java 文件中提取此信息。

我如何计算 DIT?

我知道 .getSuperClass() 但在作为静态分析器的一部分在 java 文件中进行解析时这没有用。

最佳答案

简短的回答是:你不能单独使用 JavaParser 做到这一点,但你可以很容易地通过使用 JavaSymbolSolver 来做到这一点。 ,这是一个为补充 JavaParser 而构建的库,由维护 JavaParser 的同一团队维护。

在实践中,JavaParser 只给你一个 AST。在 AST 中,类的父类(super class)只是一个名称。 JavaSymbolSolver 为您找到附加到该名称的类型声明。该声明包含查找所有祖先和回答此问题所需的所有信息以及更多信息(例如,直接和间接实现了哪些接口(interface),类继承了哪些字段,哪些方法等)

免责声明:我是JavaSymbolSolver的原作者

关于java - 如何找出java类的继承树的深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40194201/

相关文章:

c++ - 派生类中的私有(private)重写虚函数

java - 在 Java 中复制和创建文件

Java EE CDI 实例 |如何获得真正的类(class)

c - 指向字符串的指针 - C

javascript - 如何使用 JSON.parse() 显示正确的值?

c++ - C++ 中 operator= 的奇怪行为

Java 添加到未知类型泛型列表

java - 方法参数的泛型类型

java - 修复 html 中未闭合的标签或使用 HTML 解析器解析以进行 XSLT 转换

C++ virtual Diamond 继承