Javaで独自のリスナーを設定する方法について知りたいです。たとえば、1から100までの数値をインクリメントする関数があります。値が50に達したらリスナーを設定したいのですが、どうすればよいですか? Plsは私にチュートリアルを提案します。
リスナーを使用するクラスのソースをご覧ください。実際、それは非常に簡単です:
MyListener
MyListener
のリストを維持するオブザーバーパターンについては、Java=コードは wikipedia をご覧ください。
https://stackoverflow.com/a/6270150/3675925
おそらく observer pattern を調べたいでしょう。
始めるためのサンプルコードを次に示します。
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..."
}
}
ユースケースには EventBus を使用することをお勧めします。素敵なAPIデザインを備えており、使いやすいです。 Getting Started セクションを見て、どのように機能するかを確認してください。
すべての変数にリスナーをアタッチできる組み込みメカニズムはありません。監視するオブジェクトは、それ自体をサポートする必要があります。たとえば、Observableになり、onChangeイベントをそのObserverに送信します(追跡されていることを確認する必要もあります)。