[英]How to create custom Listeners in java?
我想知道如何在 java 中设置我们自己的监听器。例如,我有一个将数字从 1 递增到 100 的函数。我想在值达到 50 时设置一个监听器。我该怎么做? 请建议我任何教程。
https://stackoverflow.com/a/6270150/3675925
您可能想研究观察者模式。
以下是一些示例代码,可帮助您入门:
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..."
}
}
查看使用侦听器的任何类的来源。 其实很简单:
MyListener
MyListener
列表至于观察者模式以及一些 Java 代码,请查看wikipedia 。
您可以使用Signals库。 它看起来像这样:
interface FiftySignal{
void on50();
}
class FiftyMaker{
FiftySignal fiftySignal = Signals.signal(FiftySignal.class).dispatcher;
void doIt(){
for(int i = 0; i < 100; i++){
if(i == 50){
fiftySignal.on50(); // dispatching the event
}
}
}
}
class Boo{
Signal<FiftySignal> fiftySignal = Signals.signal(FiftySignal.class);
void bar(){
fiftySignal.addListener(()-> System.out.println("It's 50!")); // listener
}
}
免责声明:我是信号的作者。
没有内置机制可以让您将侦听器附加到所有变量。 您要观看的对象需要自己提供支持。 例如,它可以变为 Observable 并向其 Observers 触发 onChange 事件(您还必须确保被跟踪)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.