我有三个类,分别是Value设置类,B类,它同时创建了getter和setter方法,B类获得了值(在A类中设置)
因为我要在A类和C类中创建B类的新实例。我无法在C类中设置Cwhioch的值。
我要承认的是,我们需要将对C类实例的引用从A类传递到B类。
但是我不知道该怎么做。
我尝试使用此代码。我知道结果是不可能的。我不知道该怎么办。
public Class A {
int X = 9;
B b = new B();
b.setValue(X);
}
public Class B {
private float value = 0;
public float getValue() {
return value;
}
public void setValue(float value){
this.value = value;
}
}
public Class C {
B b = new B();
final float x = b.getValue();
}
我希望在C类中使用B类的getValue()方法时,能够通过setValue()方法获得在A类中放入的值
答案 0 :(得分:0)
希望这对您有所帮助。
答案 1 :(得分:0)
您可以通过以下方式进行操作:
public class A {
int X;
B b;
public A(int x, b b){
this.b = b;
this.b.setValue(X);
}
}
public class C {
B b;
public C(B b){
this.b = b;
}
public float getX(){
return b.getValue();
}
}
现在,您将B类的相同引用传递给A类和C类,如下所示:
public static void main(String[] args){
B b = new B();
A a = new A(9,b);
C c = new C(b);
float x= c.getX();
}
答案 2 :(得分:0)
您可以通过在Class中添加公共静态属性来实现。
静态属性直接与该类相关联。即使不创建类的实例也可以调用它们,例如:ClassName.propertyName。
public Class B {
public static float value = 0;
}
在A类内部,您可以这样设置B的float值:
public Class A {
B.value = 9;
}
并获取值:
public Class C {
final float x = B.value;
}
答案 3 :(得分:0)
每当使用“ new”关键字创建对象时,请记住您正在创建一个新对象,并为其分配了新的存储空间。 现在在类C中,当您创建新的对象B时,将为该实例b分配新的存储空间。 (此实例b与A类中的b指向的内存位置不同) 创建对象后,立即调用b.getValue(),它将仅为您提供默认值“ value”。
当我在C类中使用B类的getValue()方法时,我能够 通过setValue()方法放入A类的值
为了获取A中设置的值,您需要调用b的getValue()- 类A中的对象b (而不是C类中声明的对象b)
因此,您需要在C类中使用a.b.getValue()
访问它。
答案 4 :(得分:0)
尝试一下!
在ClassA的构造函数中,传递ClassB的引用并设置值。
public class ClassA {
int X=9;
ClassB b;
public ClassA(ClassB b){
this.b = b;
this.b.setValue(X);
}}
类似地,在ClassC的构造函数中,传递ClassB的引用并调用方法getValue()以检索由classA设置的值。
public class ClassC {
ClassB b;
public ClassC(ClassB b){
this.b = b;
}
public float getX(){
return b.getValue();
}}
B类具有setter和getter函数。在主函数中,为ClassB创建一个实例,并将相同的引用传递给ClassA和ClassC。
public class ClassB {
private float value = 0;
public float getValue() {
return value;
}
public void setValue(float value){
this.value = value;
}
public static void main(String[] args){
ClassB b = new ClassB();
ClassA a = new ClassA(b);
ClassC c = new ClassC(b);
float x= c.getX();
System.out.println(x);
}}
答案 5 :(得分:0)
最后,我能解决我的问题,谢谢您的建议。
但是我实际上做到了。我将吸气剂和吸气剂设为静态。现在,我不需要再次创建引用来获取价值。
我的代码
public Class A {
int X = 9;
B b = new B();
b.setValue(X);
}
public Class B {
private static float value = 0;
public static float getValue() {
return value;
}
public void setValue(float value){
B.value = value;
}
}
public Class C {
final float x = B.getValue();
}