8号店长 2021-03-26 11:17 采纳率: 50%
浏览 28
已结题

如何修改并固定函数的传参

public class XposedManager implements IXposedHookLoadPackage {
    public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
        if(lpparam.packageName.equals("com.bbk.appstore")) {
                XposedHelpers.findAndHookMethod("com.a.b.c", lpparam.classLoader,"a", new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(MethodHookParam param)
                            throws Throwable {
                        // TODO Auto-generated method stub

                        String result = "this is your value";
                        param.setResult(result );
                    }
                });
            }
    }

这段代码可以修改函数的返回值,我想修改函数本身的参数值可以吗?比如sum(a)函数中的a 值

  • 写回答

2条回答 默认 最新

  • 小亮点科技 2021-03-26 11:31
    关注

    这个涉及到是引用传参还是值传参

    1.如果是基类型是值传递,在方法中修改参数变量的值不改变调用方入参的值。

    如:

    有一个方法

    calss Test{

    public void fun(int a){

    a = 11;

    }

    }

    int a;

    Test t = new Test();

    t.fun(a);

    System.out.println("a = " + a);

    a = 10;

    2.引用传递

    class TestParam{

    public int a;

    }

    calss Test{

    public void fun(TestParam tp){

    tp.a = 11;

    }

    }

    代码:

    TestParam tp = new TestParam();

    tp.a = 10;

    Test t = new Test();

    t.fun(tp);

    System.out.println("tp.a = ", tp.a);

    这时输出tp.a = 11

    3.引用本身的变化不影响原来的引用

    class TestParam{

    public int a;

    }

    calss Test{

    public void fun(TestParam tp){

    TestParam tp1  = new TestParam();

    tp1.a = 20;

    tp = tp1;//这里是把tp的引用改到了tp1,但调用方的引用没有变化。

    }

    }

    代码:

    TestParam tp = new TestParam();

    tp.a = 10;

    Test t = new Test();

    t.fun(tp);

    System.out.println("tp.a = ", tp.a);

    这时输出tp.a = 10

    以上三种情况希望有你对你能有帮助。

    如果我的回复帮到了你,希望能采纳,并关注我,我会持续发布Java开发的知识。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月26日

悬赏问题

  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?