Java 如何获取“信息”;这";INRIA-SPOON中的变量
我和INRIA Spoon一起工作 我有一些动态方法调用,如下所示:Java 如何获取“信息”;这";INRIA-SPOON中的变量,java,abstract-syntax-tree,inria-spoon,Java,Abstract Syntax Tree,Inria Spoon,我和INRIA Spoon一起工作 我有一些动态方法调用,如下所示: a.doSomething(); 我可以使用CtInvocation实例的getTarget()方法获取变量accessa。我的任务是生成代码,将a存储到文件中。为此,我需要a的类型和源位置(类名、行等),以便生成类似logger.logSerializable(a,“My.class:21”)或类似logger.logDoubleArrayList(a,“My.otherClass:23)”的代码 到目前为止还不错,通过获
a.doSomething();
我可以使用CtInvocation
实例的getTarget()
方法获取变量accessa
。我的任务是生成代码,将a
存储到文件中。为此,我需要a
的类型和源位置(类名、行等),以便生成类似logger.logSerializable(a,“My.class:21”)
或类似logger.logDoubleArrayList(a,“My.otherClass:23)”的代码
到目前为止还不错,通过获取CtInvocation
实例的getTarget
方法的结果,我成功地做到了这一点。但是,当调用的目标是相等的时,这个
,例如:
doSomething(); // equivalent to -> this.doSomething();
getTarget
返回null
如何获取给定的CtInvocation
目标的此
变量访问 通过查找CtThisAccess
的目标(getTarget
)实例,或直接处理CtThisAccess
使用哪个版本?在最新版本中,getTarget不应该返回null,而是一个CtThisAccess。不管怎样,你的评论正好回答了我的问题,谢谢!将Spoon版本切换到5.2时,应将CtThisAccess
标记为隐式。