何かのために自分のリスナーを作成し、他のリスナーと同じようにそれを使用できるようにするにはどうすればよいのだろうかと思っていました。
public interface Listener {
public void onListen(Event e);
}
そしてこれは私のクラスで
public class test implements Listener {
Object.add(new Listener() {
@Override
public void onListen(Event e) {
}
});
}
私が本当に求めているのは、私が作成したリスナーに関連して何かが起こったかどうかを確認する方法をどこで定義するかということでもあると思います。
これが意味をなさない場合は、教えてください。明確にします。
せいぜいこれがあなたにとって意味がないなら、私はこれを試してみます。コンボボックスで選択したオプションが別のオプションに変更されたかどうかをリスナーに確認させるにはどうすればよいですか。実際にはコンボボックスリスナーは必要ありませんが、それは単なる例です。
これが短い例です:
private static class Position {
}
private static class Ball {
private ArrayList<FootballObserver> observers = new ArrayList<FootballObserver>();
private Position ballPosition = new Position();
public void registerObserver(FootballObserver observer) {
observers.add(observer);
}
public void notifyListeners() {
for(FootballObserver observer : observers) {
observer.notify(ballPosition);
}
}
public void doSomethingWithFootballPosition() {
//bounce etc
notifyListeners();
}
}
private static interface FootballObserver {
void notify(Position ball);
}
private static class Player implements FootballObserver {
public void notify(Position ball) {
System.out.println("received new ball position");
}
}
public static void main(String... args) {
FootballObserver player1 = new Player();
Ball football = new Ball();
football.registerObserver(player1);
football.doSomethingWithFootballPosition();
}
必要なリスナーを作成するのに問題はありませんが、それを期待するクラスにのみ適用できます(したがって、_(new Object()).addMyListener
_を実行することはできません)
リスナーを使用するクラスにaddMyListener(MyListener myListener)
メソッドを追加する必要があります。渡したリスナーを後のユーザーのためにリストに保存するだけです。 addMyListenerメソッド(およびfireMyListeners()
)メソッドを使用してインターフェイスを作成することをお勧めします。
もちろん、fireMyListeners()
メソッドを呼び出すコードも提供する必要があります。次に、fireMyListeners()
はリスナーをループして、リスナーの通知メソッドを呼び出します。