我有一些疯狂的任务,听起来像任务不可能。我需要通过一些方法来传递一些数据,这些方法我无法修改(只能修改最后一个)。例如:通过调用堆栈传递数据,无需修改方法
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