如何用Java列出文件内所有导入类的方法并统计方法调用次数
解决方案
JDK自带类方法的获取方式
你可以直接读取JDK内置类的方法列表,不存在无法访问对应jar包的问题:
- JDK 8及更早版本:核心类全部打包在JDK安装目录下的
jre/lib/rt.jar中,直接用你现有处理自定义类的逻辑即可,示例命令如下:javap -cp 你的JDK安装路径/jre/lib/rt.jar java.util.ArrayList - JDK 9及之后的模块化版本:javap默认已经加载了JDK内置类的类路径,不需要额外指定jar包路径,直接运行如下命令就能拿到对应类的方法列表:
javap java.util.ArrayList
现有方案优化建议
你当前用字符串匹配的方式误差率较高,容易出现不同类同名方法、变量名和方法名重名导致的统计错误,有两个更稳妥的实现方向:
- 改用Java语法解析工具生成抽象语法树(AST)完成统计:可以用JavaParser、Eclipse JDT这类开源库,直接遍历AST中的方法调用节点,就能精准获取调用的类全限定名、方法名,不需要自行做字符串匹配,准确率远高于当前方案。
- 如果要保留现有字符串匹配的逻辑,建议先解析代码中的import语句,建立短类名和全限定类名的映射关系,避免不同包下同名类的统计混淆。
内容的提问来源于stack exchange,提问作者Lucas Pace
相关产品推荐
相关产品推荐

