我有一些瘋狂的任務,聽起來像任務不可能。我需要通過一些方法來傳遞一些數據,這些方法我無法修改(只能修改最後一個)。例如:通過調用堆棧傳遞數據,無需修改方法
SomeData someData; //not passed in method1
obj1.method1(...);
這裏是OBJ1類代碼
obj1 {
someReturnClass method1(...) {
...
obj2.method2(...);
...
}
}
OBJ2和method2調用一些方法,他們得到objN.methodM前()。它甚至可以在單獨的線程中運行(所以,ThreadLocal不會幫助)。我需要訪問methodM中的someData,它不會通過此堆棧作爲參數傳遞。
我有一些概念可以通過異常和雙重運行methodM來獲得它,但它看起來很醜。
你有什麼想法,如何將someData傳遞給methodM()?
要清楚:你的意思是你需要訪問一個方法激活的局部變量,一個你不能改變的方法,但是你知道存在的方法在棧上較低? – Marcin
基本上,你需要某種(相對)靜態數據。這可能是一個「單例」,一些常見的可尋址對象中的實例字段,線程局部變量或少數其他事物。 –
是的,我想過一些單身人士。但是以我的方法結束的幾個這樣的堆棧可能會同時運行。 – Oroboros102