[讨论] 求指点,如何取得上层函数的参数值?
budairenqin
2012-05-02
public static void main(String[] args) { String argString = "test"; method1(argString); } public static void method1(String arg1) { method2(); } public static void method2() { // 取得argString的值,怎么做到? } 如上面代码,想在method2的方法体内取得argString的值(注意不是取得“参数名”,我知道“参数名”可以通过class文件LocalVariableTable取得) 大家可否给点指点 |
|
xiaoyu
2012-05-02
budairenqin 写道 public static void main(String[] args) { String argString = "test"; method1(argString); } public static void method1(String arg1) { method2(); } public static void method2() { // 取得argString的值,怎么做到? } 如上面代码,想在method2的方法体内取得argString的值(注意不是取得“参数名”,我知道“参数名”可以通过class文件LocalVariableTable取得) 大家可否给点指点 首先 LocalVariableTable 还要依赖编译的时候是否使用了-g 选项(所以不是一定有的) 第二 比较简单的方法是使用ThreadLocal , 把argString 压到ThreadLocal(用完后, 记得释放哦). |
|
budairenqin
2012-05-02
xiaoyu 写道 budairenqin 写道 public static void main(String[] args) { String argString = "test"; method1(argString); } public static void method1(String arg1) { method2(); } public static void method2() { // 取得argString的值,怎么做到? } 如上面代码,想在method2的方法体内取得argString的值(注意不是取得“参数名”,我知道“参数名”可以通过class文件LocalVariableTable取得) 大家可否给点指点 首先 LocalVariableTable 还要依赖编译的时候是否使用了-g 选项(所以不是一定有的) 第二 比较简单的方法是使用ThreadLocal , 把argString 压到ThreadLocal(用完后, 记得释放哦). 谢谢这位大牛指点,ThreadLocal是目前我在使用的方案,主要是我不想在method1方法中增加压到ThreadLocal的相关代码,最好是只修改method2方法 实际情况是:service基类想狗血的得到控制层的request,用的struts |
|
jsjzhou
2012-06-01
关于"实际情况是:service基类想狗血的得到控制层的request,用的struts "
在通常情况下, request是web层的概念, 最好不要蔓延到service层去. |