JDT的AST相关。

yangfei89102 2014-06-09 09:21:15
JDT的AST 我用ASTVisitor遍历 方法调用
public boolean visit(MethodInvocation node){


例如我获得了如下图这样一个node
我想知道一下两点
1、AA()方法来自哪个类(例如AA()是testA类里的方法,想得到testA.AA()这样的结果)
2、参数userAction、2.2和3 分别是什么类型。(PS:不是AA方法定义的参数类型,是我实际参数的类型)

预期结果
----> testA.AA(String,double,int)
请问怎样通过代码来
...全文
218 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangfei89102 2014-06-16
  • 打赏
  • 举报
回复
LZ的解决方法: 首先解释一下我的初衷,我想通过获取方法的 类名.方法名(参数1类型,参数2类型...)来判断被调用的方法是来自哪个类。 解决思路: 思路来自ASTView 这个插件,将jar包反编译后了解了ASTView是如何确定被调用方法信息的——核心:IBinding。 具体做法:(只捡简要部分说明,不过多的贴代码了) 这个项目是eclipse 的插件项目,以批处理为最终目的,对类的每一个field和Method进行查询分析。 1.遍历项目全部.java文件,生成AST树。
ICompilationUnit cu = JavaCore.createCompilationUnitFrom(file);
ASTParser parser = ASTParser.newParser(AST.JLS4);
CompilationUnit root;
ASTVisitorImpl visitor = new ASTVisitorImpl();
root.accept(visitor);
2.利用ASTVisitor解析AST树,以MethodInvocation(方法中的方法调用)为例,使用Binding来获取被调用方法的信息
Expression expression = (Expression)node;
MethodInvocation methodInvocation = (MethodInvocation)expression;
IMethodBinding binding = methodInvocation.resolveMethodBinding();
如此便可取得被调用方法的定义信息,包括类名,方法名,参数类型等
不是说好的吗 2014-06-09
  • 打赏
  • 举报
回复
不太懂

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧