访问另一个类的实例

时间:2013-01-29 19:53:57

标签: java

所以我想通过一个小项目。我似乎遇到的一个问题是: 我有一个A类,它包含一个C类实例和一个B类实例列表。 每个类都包含一个计时器。当该计时器触发事件​​时,我需要执行C类方法。

public class A
{
  C C1 = new C(this);
  public ArrayList<B> B1= new ArrayList<>();        
}

所以当计时器到期时我需要点火:

C1.method()

1 个答案:

答案 0 :(得分:0)

非常基本/简单的方法:实现一个简单的订阅/发布框架。

  1. 创建一个定义回调方法的界面。
  2. 在C类中实现回调接口。
  3. 提供一种方法,通过该方法,类C anc向每个B类实例注册回调;这样做。
  4. 当计时器在类b的特定实例中触发时,调用回调。
  5. 对于eaxmple:

    public interface BlammyHoot
    {
      void hoot(); // this is the call back.
    }
    
    public class C implements BlammyHoot
    {
      public void hoot()
      {
        // implement the callbe method here.
      }
    }
    
    public class B
    {
      private List<BlammyHoot> hootList = new LinkedList<BlammyHoot>();
    
      public void registerBlammyHoot(final BlammyHoot theHoot)
      {
        if (theHoot != null)
        {
          hootList.add(theHoot);
        }
      }
    
      public void respondToTimerTimeout()
      {
        for (BlammyHoot hootElement : hootList)
        {
          hootElement.hoot();
        }
      }
    }
    

    警告:对obove java代码执行零测试(包括但不限于,我没有编译它)。