[讨论] 求指点,如何取得上层函数的参数值?

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层去.
Global site tag (gtag.js) - Google Analytics