如何引用在另一个类中创建的实例

时间:2013-04-29 22:10:07

标签: java

我在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(); 
}

3 个答案:

答案 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

另外,请确保您知道访问者关键字的含义(私人,受保护,[友好],公开)。