请协助以下java代码。
CLASS1 : 我在Class1中使用了以下代码:
public String getnumber()
{
return this.number;
}
CLASS2 : 我的另一个Class2类,代码设置为:
Class1 cla = new Class1();
public String number_to_compute=cla.getnumber() // This is variable
CLASS3 :
我是第三课class3
我正在执行其他一些方法:
Class1 class1 = new Class1();
Class2 class2 = new Class2();
public static void main(String args[])
{
System.out.println(class1.getumber());
System.out.println(class2.number_to_compute);
}
观察:
在上述问题中,class1.getumber()
工作正常,并在class2.number_to_compute
输出null
为什么class2.number_to_compute
为null
值?
答案 0 :(得分:1)
问题在于,您分别在class1
和class2
中为class3
创建新对象,这就是为什么两个对象彼此不相关的原因..如果您想要{{ 1}}和class2
具有相同的class3
实例,您需要将class1
创建为class1
,这将始终提供singleton
的单个对象实例。
尝试如下: -
class1
希望它有帮助...:)
答案 1 :(得分:0)
在Class2
中,您使用number_to_compute
内的cla
对象计算Class2
。 (它不会在Class1
)
Class3
对象
正确设置Class2的number
中cla
的值。
class Class1
{
String number;
public String getnumber()
{
return this.number;
}
}
class Class2
{
Class1 cla;
public String number_to_compute;
public Class2()
{
cla = new Class1();
cla.number = "1";
number_to_compute = cla.getnumber();
}
}
class Class3
{
Class1 class1;
Class2 class2;
public Class3()
{
class1 = new Class1();
class1.number = "2";
class2 = new Class2();
}
public static void main(String args[])
{
Class3 cl = new Class3();
System.out.println(cl.class2.cla.getnumber());
System.out.println(cl.class2.number_to_compute);
}
}
或者您可以使用Class1
Class3
对象
class Class1
{
String number;
public String getnumber()
{
return this.number;
}
}
class Class2
{
Class1 cla;
public String number_to_compute;
public Class2()
{
cla = new Class1();
cla.number = "1";
number_to_compute = cla.getnumber();
}
}
class Class3
{
Class1 class1;
Class2 class2;
public Class3()
{
class1 = new Class1();
class1.number = "2";
class2 = new Class2();
class2.cla = class1;
}
public static void main(String args[])
{
Class3 cl = new Class3();
System.out.println(cl.class2.cla.getnumber());
System.out.println(cl.class2.number_to_compute);
}
}
顺便说一句,use setters and getters设置实例变量总是好的。
答案 2 :(得分:0)
它对我来说很好。我看到的唯一需要添加的内容是static
中的class1
和class2
定义Class3
关键字。见下文。
public class Class1
{
String number = "1234";
public String getnumber()
{
return this.number;
}
}
public class Class2
{
Class1 cla = new Class1();
public String number_to_compute = cla.getnumber();
}
public class Class3
{
static Class1 class1 = new Class1();
static Class2 class2 = new Class2();
public static void main(String args[])
{
System.out.println(class1.getnumber());
System.out.println(class2.number_to_compute);
}
}
运行时,输出
1234
1234