Java是否对事件有本机支持,类似于C#?

我对Java听不到的事情感到有点困惑。

但我知道它会做GUI事件。

我错过了什么吗? java有事件处理机制吗?

我知道我可以实现发布者订阅者模式,但我正在寻找Java中的本机支持。

我似乎记得Java 5或6中的Java添加事件,但我不记得我在哪里听到这个,我可能正在弥补它。

基本上我将设备包装在java类中,设备会抛出事件,而我正在寻找最合理的方式来揭示它。 我来自.Net背景,我正在寻找像.Net(C#)中的事件

任何帮助,将不胜感激。

正如您已经说过的,您可以使用publisher-subscriber / Observer模式执行完全相同的操作。 它只需要更多的腿部工作。

不,Java没有对事件的原生支持,比如C#和委托一样。

其他人在此提出的订阅/发布机制将允许您实现同步事件。 对于异步事件循环(激发和忘记)您可能想要查看“演员”。 Actor由A类消息(事件)的处理程序组成,以及用于执行处理程序的线程策略。 这使您可以执行并发的异步事件处理,如下所示:

 public class EventExample { public static void main(String[] args) { while ((char c = System.in.read()) >= 0) { eventHandler.act(c); } } public static Actor eventHandler = Actor.actor(Strategy.simpleThreadStrategy(), new Effect() { public void e(Character c) { // Do something with c here. } }); } 

在这里获取演员库。 在这里查看Javadoc。

从我记得的Java(在6个月内没有使用它),我不认为有事件ala .NET。 您最好的选择可能是利用发布者/订阅者模式。 它非常容易实现并且非常可靠。

这是一篇关于该主题的文章 ,也参见哪个Actor模型库/ Java框架?

Swing或AWT是Java UI工具包,它们都处理事件 – 请查看官方Swing事件教程中的示例。 您需要在Swing中编写UI,以便能够为这些事件注册侦听器。

我不了解C#,但不是UI组件的Java Bean当然可以通过事件通知监听器状态变化:

http://java.sun.com/developer/onlineTraining/Beans/beans02/

自从它首次出现以来,它一直是Java Beans规范的一部分。 请注意教程上的日期:它是2000年份的复古版。

源和侦听器必须在同一JVM中运行。 您必须使用代理与另一个JVM中运行的东西进行通信,但是可以完成。

我用Google搜索了C#事件教程并找到了这个 。 Java注册监听器和触发属性更改事件让人想起我在浏览C#教程时所看到的内容。 我错过了重要的事吗? (我承认我没有深入阅读 – 现在没时间。)

Java中没有本机支持 – 您必须实现Observer模式 (也称为Subcribe / Publish)。 它很直接 – 不超过十几行代码。

您可能还想查看开源EventBus库,与标准发布者/订阅者模式相反,它使用中介类(事件总线)以减少发布者/订阅者模式(订阅者模式)中所需的紧密耦合。必须知道所有出版商都要向他们注册,这并不总是可行而且往往很麻烦。

我在GUI应用程序中使用它,但它可以处理任何类型的事件。

你需要线程。 java中的GUI有事件,因为有一个专用的线程可以调度UI事件。 还有一些叫做“Observer”和“Observable”(这是来自GUI的东西的味道中立版本的事件监听器),但只是设计模式……