在Class2
中,我想检索在init类内部传递的objects(obj1,2)
方法变量。但是我总是在0
中获得Class2
的价值。请建议如何在obj1,2
中获取Class2
变量。谢谢!
public class Class1 {
public int Value;
public void setMethod(int val) {
this.Value = val;
}
public int getMethod() {
return Value;
}
}
//initialization class
import Class1;
public class init {
Class1 obj1 = new Class1();
Class1 obj2 = new Class1();
obj1.setMethod(10);
obj2.setMethod(20);
System.out.println("obj1 value is" + obj1.getMethod()); // it will print 10
System.out.println("obj2 value is" + obj2.getMethod()); // it will print 20
}
//another class where I want my obj1, obj2 method variables to retrieve
import Class1;
private class Class2 {
Class1 obj1 = new Class1();
System.out.println("obj1 value is" + obj1.getMethod()); // it is printing 0
}
答案 0 :(得分:0)
您正在尝试从init
类读取对象1和2,但是您已经用Class1
代码创建了Class2
的对象。
您的代码中存在编译错误,并且您未遵循有关类和方法的正确命名约定。
请参见下面的代码,您需要使用公共访问修饰符定义三个单独的类。所有对象初始化都可以在类构造函数中完成,也可以定义任何公共方法
public class Class1{
public int value;
/*public void setMethod(int val){this.Value=val; -- here variable name is in small letter so compiler error}
public int getMethod(){return Value; -- here variable name is in small letter so compiler error} -- getter setter name is not correct*/
public void setValue(int val) {this.value=val;}
public int getValue(){return this.value;}
}
public class Init{
Class1 obj1 = new Class1();
Class1 obj2 = new Class1();
public Init() {
obj1.setValue(10);
obj2.setValue(20);
System.out.println("obj1 value is"+obj1.getValue()); // it will print 10
System.out.println("obj2 value is"+obj2.getValue()); // it will print 20
}
}
public class Class2{
/* Class1 obj1 = new Class1(); -- here obj1 will not refer to object in Init class
System.out.println("obj1 value is"+obj1.getMethod()); // it is printing 0 */
public static void main(String[] args) {
Init init = new Init();
Class1 obj1 = init.obj1;
System.out.println("obj1 value is"+obj1.getValue());// this will print 10
}
}
答案 1 :(得分:0)
请确保您首先了解类和对象(类的实例)之间的区别。
对于我的其余回答,我假定您具有包含语句的方法或构造函数
您的代码创建三个对象:
Class2中的实例永远不会初始化。因此,值为0。
如果您需要将Class1的实例传递给Class2,则可以在构造函数中这样做:
class Class1 {
...
}
class Class2 {
// an instance of Class2 holds a reference to an instance of Class1
private Class1 obj1;
Class2(Class1 obj1) {
this.obj1 = obj1;
}
}
public class Main {
public static final void main(String... args) {
Class1 obj1 = new Class1();
Class2 obj2 = new Class2(obj1);
}
}