如何将Java类中不同方法的变量传入同一个目标方法?
解决方法:将A、B、C方法中的变量传入D方法
嘿,我来帮你搞定这个把A、B、C方法里的变量传给D的问题~首先得先指出你当前代码里的几个小问题,再给你几种实用的解决方案:
先说说原始代码的问题
- 变量作用域问题:
a、b、c都是各自方法里的局部变量,只能在定义它们的方法内部使用,D方法根本访问不到这些变量。 - 语法错误:D方法的参数没有声明类型,Java里必须明确参数类型,比如
int a而不是a。 - 局部变量未初始化:你只声明了
int a;但没赋值,直接用的话会编译报错。
方案1:把变量改成类的成员变量(适合共享实例状态)
如果这些变量是属于整个Test类实例的状态(比如需要在多个方法中持续保存),可以把它们提升为类的成员变量,这样所有方法都能访问:
public class Test { // 类名首字母大写是Java规范哦 // 成员变量,属于整个实例,所有方法都能访问 private int a; private int b; private int c; public void A() { a = 15; // 给成员变量赋值 } public void B() { b = 25; } public void C() { c = 35; } public void D() { int d = a + b + c; System.out.println("总和是:" + d); // 输出75 } // 测试调用 public static void main(String[] args) { Test testObj = new Test(); testObj.A(); testObj.B(); testObj.C(); testObj.D(); } }
方案2:让A、B、C返回变量值,调用D时直接传递(适合临时值场景)
如果a、b、c只是方法计算出来的临时值,不需要长期保存,更推荐让A、B、C返回对应的值,然后在调用D的时候把这些值传进去,这样更符合单一职责原则:
public class Test { public int A() { int a = 10; return a; // 返回计算好的a值 } public int B() { int b = 20; return b; } public int C() { int c = 30; return c; } // D方法明确声明参数类型 public void D(int a, int b, int c) { int d = a + b + c; System.out.println("总和是:" + d); // 输出60 } public static void main(String[] args) { Test testObj = new Test(); // 先获取A、B、C的返回值,再传给D int aVal = testObj.A(); int bVal = testObj.B(); int cVal = testObj.C(); testObj.D(aVal, bVal, cVal); } }
方案3:链式调用(适合设置类状态的场景)
如果A、B、C是用来一步步设置实例状态的,可以让每个方法返回当前实例,实现链式调用,代码会更简洁:
public class Test { private int a; private int b; private int c; public Test setA() { a = 5; return this; // 返回当前实例,支持链式调用 } public Test setB() { b = 10; return this; } public Test setC() { c = 15; return this; } public void calculateSum() { // 可以给D起个更有意义的名字 int d = a + b + c; System.out.println("总和是:" + d); // 输出30 } public static void main(String[] args) { // 链式调用一步完成设置和计算 new Test().setA().setB().setC().calculateSum(); } }
额外注意事项
- Java类名规范是首字母大写,所以建议把
test改成Test - 局部变量必须初始化后才能使用,否则会编译错误
- 方法命名尽量见名知意,比如把
A、B改成setA、calculateBValue之类的,可读性会更好
内容的提问来源于stack exchange,提问作者user529295
相关产品推荐
相关产品推荐

