Java中如何在方法及跨类跨包传递值?新手技术咨询
Java跨方法、跨类、跨包传递值的实现方法
首先纠正你示例代码里的几个基础语法错误,这是新手容易踩的坑:
- Java类名要遵循大驼峰命名(首字母大写),比如
Class1而非class1 - 类和方法的定义必须用
{}包裹代码块 - 变量必须声明类型(比如
int a),赋值是变量 = 表达式,不是a + a = e这种反写 - 方法如果要返回值,必须指定返回类型(比如
public int method1()而非public void)
下面针对你的需求,给出两种最常用的实现方式:
方式一:让方法返回计算结果(推荐)
这是最直接的方式,修改方法使其返回计算后的值,在需要的地方调用方法获取结果。
各包类的实现代码
package1/Class1.java
package package1; public class Class1 { // 接收参数a,返回计算后的e public int method1(int a) { int e = a + a; return e; } }
package1/Class2.java
package package1; public class Class2 { public int method2(int b) { int f = b + b; return f; } }
package2/Class3.java
package package2; public class Class3 { public int method3(int c) { int g = c + c; return g; } }
package3/Class4.java
package package3; // 跨包引用需要import对应类 import package1.Class1; import package1.Class2; import package2.Class3; public class Class4 { public void method4() { // 创建各个类的实例 Class1 class1 = new Class1(); Class2 class2 = new Class2(); Class3 class3 = new Class3(); // 调用方法获取e、f、g的值 int e = class1.method1(2); // 传入a=2,得到e=4 int f = class2.method2(3); // 传入b=3,得到f=6 int g = class3.method3(4); // 传入c=4,得到g=8 int d = e + f + g; System.out.println("计算结果d:" + d); // 输出18 } // 测试运行 public static void main(String[] args) { new Class4().method4(); } }
方式二:使用类的成员变量+Getter方法
如果需要在类的多个方法间共享值,或者不想让方法直接返回结果,可以把计算后的值存到类的成员变量中,通过Getter方法对外提供访问。
修改后的package1/Class1.java示例
package package1; public class Class1 { // 私有成员变量,仅类内部可直接访问 private int e; public void method1(int a) { e = a + a; } // Getter方法,对外暴露e的值 public int getE() { return e; } }
在package3/Class4中调用的方式
Class1 class1 = new Class1(); class1.method1(2); // 先调用method1计算e的值 int e = class1.getE(); // 通过Getter获取e
跨包访问注意事项
- 只有
public修饰的类才能被跨包引用 - 类的成员变量建议用
private修饰,通过Getter/Setter方法访问(封装原则) - Eclipse中如果出现跨包引用报错,可以检查:
- 类是否被
public修饰 - 是否正确添加了
import语句 - 项目的包结构是否正确(右键项目 -> Build Path -> Configure Build Path 确认源码目录)
- 类是否被
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

