-5

だから私は小さなプロジェクトを通して考えています。そして、私が遭遇していると思われる問題は次のとおりです。クラスCのインスタンスとクラスBのインスタンスのリストを含むクラスAがあります。各クラスにはタイマーが含まれています。そのタイマーがイベントを発生させたときにクラスCメソッドを実行する必要があります。

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

したがって、タイマーの期限が切れたら、次のようなものを起動する必要があります。

C1.method()
4

1 に答える 1

0

非常に基本的で簡単なアプローチ: シンプルなサブスクライブ/パブリッシュ フレームワークを実装します。

  1. コールバック メソッドを定義するインターフェイスを作成します。
  2. クラス C でコールバック インターフェイスを実装します。
  3. クラス C がクラス B の各インスタンスにコールバックを登録する手段を提供する。そうする。
  4. クラス b の特定のインスタンスでタイマーが起動したら、コールバックを呼び出します。

例:

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

警告: 上記の Java コードに対して実行されたテストはゼロです (これに限定されるものではありませんが、私はコンパイルしませんでした)。

于 2013-01-29T20:06:33.397 に答える