如何访问 INRIA-SPOON 中的 "this" 变量
How to gain access to "this" variable in INRIA-SPOON
我正在使用 INRIA Spoon。
我有一些动态方法调用,如下所示:
a.doSomething();
我可以使用 CtInvocation
实例的 getTarget()
方法获取 变量访问 a
。我的任务是生成代码以将 a
存储到文件中。为此,我需要 a
的类型和源位置(class 名称、行等),以便我可以生成类似 logger.logSerializable(a, "My.Class:21")
或 logger.logDoubleArrayList(a, "My.otherClass:23)"
的代码。
到目前为止一切顺利,我通过获取 CtInvocation
实例的 getTarget
方法的结果成功地做到了这一点。但是,当调用的目标等于 this
时,例如:
doSomething(); // equivalent to -> this.doSomething();
getTarget
returnsnull。
如何获得 this
变量访问 给定 CtInvocation
的目标?
通过查找 CtThisAccess
的目标 (getTarget
) 实例或直接处理 CtThisAccess
我正在使用 INRIA Spoon。
我有一些动态方法调用,如下所示:
a.doSomething();
我可以使用 CtInvocation
实例的 getTarget()
方法获取 变量访问 a
。我的任务是生成代码以将 a
存储到文件中。为此,我需要 a
的类型和源位置(class 名称、行等),以便我可以生成类似 logger.logSerializable(a, "My.Class:21")
或 logger.logDoubleArrayList(a, "My.otherClass:23)"
的代码。
到目前为止一切顺利,我通过获取 CtInvocation
实例的 getTarget
方法的结果成功地做到了这一点。但是,当调用的目标等于 this
时,例如:
doSomething(); // equivalent to -> this.doSomething();
getTarget
returnsnull。
如何获得 this
变量访问 给定 CtInvocation
的目标?
通过查找 CtThisAccess
的目标 (getTarget
) 实例或直接处理 CtThisAccess