1. ホーム
  2. java

[解決済み】Javaでカスタムイベントを作成する

2022-04-14 06:38:51

質問

Javaでこのようなことをしたいのですが、方法がわかりません。

イベント "オブジェクト 1 say 'hello' "が発生したとき。 と言うと、オブジェクト2がそのイベントに応答して "hello"と言う。

どなたかヒントかサンプルコードを教えてください。

どのように解決するのですか?

を調べたいのでしょう。 observerパターン .

以下はサンプルコードです。

import java.util.*;

// An interface to be implemented by everyone interested in "Hello" events
interface HelloListener {
    void someoneSaidHello();
}

// Someone who says "Hello"
class Initiater {
    private List<HelloListener> listeners = new ArrayList<HelloListener>();

    public void addListener(HelloListener toAdd) {
        listeners.add(toAdd);
    }

    public void sayHello() {
        System.out.println("Hello!!");

        // Notify everybody that may be interested.
        for (HelloListener hl : listeners)
            hl.someoneSaidHello();
    }
}

// Someone interested in "Hello" events
class Responder implements HelloListener {
    @Override
    public void someoneSaidHello() {
        System.out.println("Hello there...");
    }
}

class Test {
    public static void main(String[] args) {
        Initiater initiater = new Initiater();
        Responder responder = new Responder();

        initiater.addListener(responder);

        initiater.sayHello();  // Prints "Hello!!!" and "Hello there..."
    }
}


関連記事 Javaです。カスタムイベントの作成