2016-01-04 45 views
1

我正在使用INRIA勺。如何訪問INRIA-SPOON中的「this」變量

我有一些動態方法的調用,如以下之一:

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(); 

getTarget回報

我怎樣才能獲得this變量訪問給定CtInvocation是針對?

+1

你使用哪個版本?在最新的一箇中,getTarget不應該返回null,而應該返回一個CtThisAccess。 –

+0

我正在使用4.2,但我可以更改爲5.2。無論如何,您的評論只是回答了我的問題,謝謝! –

+1

當您將Spoon版本切換到5.2時,您應該有一個標記爲隱式的「CtThisAccess」。 –

回答

1

通過查找目標(getTarget)的CtThisAccess實例或通過直接處理CtThisAccess