You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何在参数化方法间传递变量并正确传参调用

问题解答

方法A定义时明确声明了1个String类型的入参c,所有位置调用A都必须传入一个String类型的参数,不存在无参调用A()的合法写法。

方法B中调用A的传参逻辑

因为B的执行依赖A,你需要根据业务场景选择传参方式,常见两种实现:

  • 透传外部参数:给B定义和A匹配的String类型形参,调用B时传入的参数直接转给A即可
    public void B(String c) {
        A(c); // 把B收到的入参直接传递给A
    }
    
  • 内部生成参数:如果A需要的参数不需要外部传入,是B内部逻辑生成的固定值/计算值,可以直接在B内构造参数传给A
    public void B() {
        String paramForA = "B方法内部生成的参数值";
        A(paramForA);
    }
    

入口方法(main/测试方法D)传递变量给A的方法

如果要把入口方法里定义的变量传给A,沿着调用链路逐层透传参数即可。以你写的测试方法D为例,采用透传方案改完的完整可运行代码如下:

public class MethodCall {
    
    public void A(String c) {
        System.out.println(c);
    }
    
    public void B(String c) {
        A(c); 
    }

    @Test
    public void D() {
        MethodCall mc = new MethodCall();
        String entryVar = "Hello"; // 入口方法中定义的变量
        mc.B(entryVar); // 变量传给B,B内部转给A
        mc.A(entryVar); // 直接调用A时直接传入变量即可
    }
}

你原始代码存在两个编译错误:

  1. B方法内调用A()时没有传入要求的String类型参数,会触发参数长度不匹配的编译报错
  2. 如果采用无参B的写法,需要保证B内部能拿到符合要求的String类型参数传给A,否则无法通过编译

内容的提问来源于stack exchange,提问作者Palash Chatterjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:06:22