gpt4 book ai didi

Java - 创建自定义事件和监听器

转载 作者:行者123 更新时间:2023-11-29 04:20:42 26 4
gpt4 key购买 nike

我正在尝试用 Java 创建自定义事件和监听器。我已经看过这些文章和问题:

Create a custom event in Java

Java custom event handler and listeners

https://www.javaworld.com/article/2077333/core-java/mr-happy-object-teaches-custom-events.html

但我仍然无法真正理解它。这就是我想要做的:

我有一个 String 对象,它的内容随着程序的运行而改变。我希望能够向字符串添加一个监听器,监听它是否包含特定字符串以及何时运行一段代码。我想像这样使用它:

String string = "";
//String.addListener() and textListener need to be created
string.addListener(new textListener("hello world") {
@Override
public void onMatch(
System.out.println("Hello world detected");
)
}

//do a bunch of stuff

string = "The text Hello World is used by programmers a lot"; //the string contains "Hello World", so the listener will now print out "Hello world detected"

我知道可能有更简单的方法可以做到这一点,但我想知道如何以这种方式做到这一点。

感谢@Marcos Vasconcelos 指出您不能向 String 对象添加方法,那么有没有办法像@Ben 指出的那样使用自定义类?

最佳答案

所以我做了一个最小的例子,也许对你有帮助:

你的监听器需要一个接口(interface):

public interface MyEventListener
{
public void onMyEvent();
}

然后对于您的字符串,您需要一些包装类来处理您的事件

public class EventString
{
private String myString;

private List<MyEventListener> eventListeners;

public EventString(String myString)
{
this.myString = myString;
this.eventListeners = new ArrayList<MyEventListener>();
}

public void addMyEventListener(MyEventListener evtListener)
{
this.eventListeners.add(evtListener);
}

public void setValue(String val)
{
myString = val;

if (val.equals("hello world"))
{
eventListeners.forEach((el) -> el.onMyEvent());
}
}
}

您看到 myString 字段是私有(private)的,只能使用 setValue 方法访问。这样我们就可以看到我们的事件条件何时触发。

然后你只需要一些实现,例如:

EventString temp = new EventString("test");

temp.addMyEventListener(() -> {
System.out.println("hello world detected");
});

temp.setValue("hello world");

关于Java - 创建自定义事件和监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49365350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com