我正在使用INRIA Spoon。
我有一些动态方法调用,如以下调用:
a.doSomething();
我可以使用CtInvocation
实例的getTarget()
方法获得变量访问a
。我的任务是生成代码,将a
存储到文件中。为此,我需要a
的类型和源位置(类名、行等),这样我就可以生成类似logger.logSerializable(a, "My.Class:21")
或logger.logDoubleArrayList(a, "My.otherClass:23)"
的代码。
到目前为止,我通过获取一个CtInvocation
实例的getTarget
方法的结果,很好地做到了这一点。然而,当调用的目标等于this
时,例如:
doSomething(); // equivalent to -> this.doSomething();
则CCD_ 11返回null。
如何获得给定CtInvocation
的目标this
变量访问?
通过查找CtThisAccess
的目标(getTarget
)实例或直接处理CtThisAccess