我在A类中有一个函数,我想改变B类中字段的值。
C类有我的main()
并创建了一个B类和A类的新实例.A类来自API,它们的一个函数是一个监听器函数。我希望该侦听器函数能够更改B类的字段,但是当我为侦听器函数编写代码时,它无法识别B类的实例。
如何引用该实例?
示例代码:
public class A {
public void listenermethod(){
//can't reference Binstance <-------
}
}
public class B {
B.field = 1;
}
public class C {
A Ainstance = new A();
B Binstance = new B();
}
答案 0 :(得分:2)
您应该为A类提供一个私有B字段,然后您可以根据需要在此字段上调用B中的公共方法。如果您需要在单独的类(C)中创建A和B实例,则应该为A类提供public void setB(B b)
setter方法。
A.java
class A {
private B b;
public void setB(B b) {
this.b = b;
}
public void listenerMethod() {
if (b != null) {
b.someBMethod();
}
}
}
C.java
public class C {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.setB(b);
a.listenerMethod();
}
}
答案 1 :(得分:0)
您必须能够修改C类和A类。将A类方法重写为
public void listenermethod(Binstance theB){
theB.something = "some_value";
}
现在当你打电话给A班时,传递Binstance。如果你不能修改A类,那么你的任务就无法完成。
答案 2 :(得分:0)
按定义的实例属于对象。因此,您的A类必须具有B类对象作为成员:
Class A{
private B instance_of_b;
}
现在您可以像这样访问B成员:
instance_of_b.member
或属于B类的字段可以是静态的,然后A可以通过类访问它。
B.member
另外,请确保您知道访问者关键字的含义(私人,受保护,[友好],公开)。