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时直接传入变量即可 } }
你原始代码存在两个编译错误:
- B方法内调用
A()时没有传入要求的String类型参数,会触发参数长度不匹配的编译报错- 如果采用无参B的写法,需要保证B内部能拿到符合要求的String类型参数传给A,否则无法通过编译
内容的提问来源于stack exchange,提问作者Palash Chatterjee
相关产品推荐
相关产品推荐

