如何在java中创建自定义监听器?

vns*_*tty 27 java interface listener observer-pattern

我想知道如何在java中设置我们自己的监听器.例如,我有一个函数,将数字从1增加到100.我想在值达到50时设置一个监听器.我怎么能这样做?请教我任何教程.

Tho*_*mas 24

查看使用侦听器的任何类的源代码.事实上它很容易:

  • 为你的听众创建一个界面,例如 MyListener
  • 维护一份清单 MyListener
  • 在侦听器应该监听的每个事件上,迭代列表并使用某些事件参数调用适当的方法

至于观察者模式以及一些Java代码,请查看维基百科.

  • @AndroidHacker,他几乎用勺子喂你的答案.没有人会为你编码. (10认同)

do0*_*o01 18

/sf/answers/438910531/

您可能想要查看观察者模式.

这里有一些示例代码可以帮助您入门:

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...");
    }
}
Run Code Online (Sandbox Code Playgroud)

 

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..."
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,我在第一行提到它:) (3认同)
  • 从aioobe的答案中复制粘贴:http://stackoverflow.com/questions/6270132/create-a-custom-event-in-java (2认同)