Java中侦听器的用途是什么?

Java中侦听器的用途是什么?,java,listener,Java,Listener,我在网上找过这个,但是找不到一个足够的解释来解释它到底是做什么的。我看到的是一个Java接口,它作为参数在另一个类中作为“侦听器”传递。人们将各种侦听器添加到列表中,并通过单个方法调用它们 我不知道我为什么要用它。有人能解释一下吗 这是我最初的帮助帖子,有人告诉我使用监听器 使用侦听器让其他代码通知您“条件”/“事件”。例如,如果移动/单击/拖动鼠标,则可以调用“鼠标侦听器”。这取决于您的应用程序为什么提供侦听器。侦听器在事件发生时执行一些工作。它们被称为“事件侦听器”。 单击、悬停等事件。。

我在网上找过这个,但是找不到一个足够的解释来解释它到底是做什么的。我看到的是一个Java接口,它作为参数在另一个类中作为“侦听器”传递。人们将各种侦听器添加到列表中,并通过单个方法调用它们

我不知道我为什么要用它。有人能解释一下吗

这是我最初的帮助帖子,有人告诉我使用监听器


使用侦听器让其他代码通知您“条件”/“事件”。例如,如果移动/单击/拖动鼠标,则可以调用“鼠标侦听器”。这取决于您的应用程序为什么提供侦听器。

侦听器在事件发生时执行一些工作。它们被称为“事件侦听器”。 单击、悬停等事件。。 例如,我们有Java中的ActionListener接口。当事件发生时,它调用actionPerformed()方法。
你可以参考更多信息

侦听器用于通知状态更改。在大多数情况下,你可以把听众看作是观察者,因此每次发生有趣的事情时,你的听众都会被调用

您可以在以下网站上阅读有关Java模式的更多信息:


在链接了
事件监听器的代码示例中

public interface KillMonsterEventListener {
    void onKillMonster ();
}
为API用户提供了一种方法,让他们可以告诉您以下内容:

yourClass.addKillMonsterEventListener(
    new KillMonsterEventListener() {
        public onKillMonster() {
            System.out.println("A good monster is a dead monster!");
        }
    }
);
这是一段代码。当一个怪物被杀死时,召唤它回来。我将决定做什么

这是一种在执行流中的特定点(特别是在怪物被杀死时)插入代码的方法。我可以这样做:

yourClass.addKillMonsterEventListener(
    new KillMonsterEventListener() {
        public onKillMonster() {
            System.out.println("A good monster is a dead monster!");
        }
    }
);
在其他地方,我可以添加另一个侦听器:

yourClass.addKillMonsterEventListener(
    new KillMonsterEventListener() {
        public onKillMonster() {
            monsterCount--;
        }
    }
);
当你的代码在杀死怪物的侦听器列表中遍历时,即

for (KillMonsterEventListener listener : listeners) {
    listener.onKillMonster()
}

我的代码片段(即
monsterCount--
和打印输出)都会被执行。它的好处是,您的代码与我的代码完全解耦:它不知道我打印的是什么,递减的是什么变量,等等。

这是一个称为的编程范例的一部分。对象在某些情况下向其他对象发送消息,例如当对象发生更改时。这在GUI编程中经常使用。每个GUI小部件由一个类实现。当您想要处理例如来自用户的鼠标点击时,您可以向GUI小部件添加一个侦听器(也称为事件处理程序)。当用户单击小部件时,小部件将事件发送到注册的侦听器,以便应用程序能够响应鼠标单击。这将分离框架(GUI小部件类)和应用程序代码。(在某些GUI框架中,如Swing,可以向对象添加任意数量的侦听器;在其他GUI框架中,只能指定一个侦听器。)


在其他领域,事件驱动编程也很有用。您可能希望观察一个对象(请参见)。例如,支持此功能的集合可能会在其内容更改时发送事件。如果发生这种情况时需要执行某些处理,可以将自己添加为该类的侦听器。另一种方法是在每次向集合中添加项时调用后处理,但这很容易出错。

侦听器是在Java中实现的常见形式。这种技术也被称为,这是一个来自过程语言世界的术语

观察者通过可观察者进行自我注册,当某个事件发生或应通知他们某件事时,可观察者反过来调用观察者

许多框架库扮演可观察的角色,例如:

  • 您将自己(即侦听器接口的实现)注册为消息传递中间件中传入消息的侦听器
  • 您将自己注册为用户在操作系统中所做某些更改的侦听器
  • 您将自己注册为GUI事件的侦听器,例如单击按钮
Java代码中的示例:

第1部分-可观察实体

第3部分-观察者/监听器界面的基本实现

第4部分-将所有内容组合在一起

标准输出的结果为:


Servlet Listener用于侦听web容器中的事件,例如,当您在会话中创建会话或放置属性时,或者如果您在另一个容器中被动和激活,要订阅这些事件,您可以在web.xml中配置Listener,例如,HttpSessionListener

侦听器会触发实际物理请求,该请求可附加到应用程序服务器中的事件。使用侦听器,您可以跟踪应用程序级别、会话级别、生命周期更改、属性更改等

您可以通过定义监听器对象来监视servlet生命周期中的事件并对其作出反应,这些监听器对象的方法在生命周期事件发生时被调用

以下是Servlet Listener的博客文章

请粘贴一段让您困惑的代码片段,好吗?监听器有点通用,因此如果没有特定的代码示例,很难解释它们。啊,当然。我没有一个确切的密码,我被卡住了。我只是想寻求帮助,有人建议使用代码片段。我现在就发布它。您可能正在寻找observer模式的解释(这是一个一般概念,而不仅仅是Java特有的)。这正是我需要的解释类型。我不知道他们也被称为观察员。
public interface Observer {
    void onSomethingHappened(String whatHappened);
}
public class MyObserver implements Observer {
    @Override
    public void onSomethingHappened(String whatHappened) {
        System.out.println(whatHappened);
    }
}
public class Main {
    public static void main(String[] args) {

        // Create the observable.
        Observable myObservable = new Observable();

        // Create the observers (aka listeners).
        Observer myObserverA = new MyObserver();
        Observer myObserverB = new MyObserver();

        // Register the observers (aka listeners).
        myObservable.addObsever(myObserverA);
        myObservable.addObsever(myObserverB);

        myObservable.doSomeStuff();

    }
} 
We found it!
We found it!