___ qstnhdr ___ Hat Java native Unterstützung für Ereignisse, ähnlich der von C #?
___ answer436074 ___
Soweit ich mich an Java erinnere (ich habe 6 Monate nicht damit gearbeitet), glaube ich nicht, dass es Ereignisse wie .NET gibt. Ihre beste Wette wird wahrscheinlich sein, das Publisher / Subscriber-Muster zu verwenden. Es ist ziemlich einfach zu implementieren und ziemlich zuverlässig.
___ qstntxt ___
Ich bin etwas verwirrt von dem, was ich gehört habe Java macht keine Ereignisse.
Aber ich weiß, dass es GUI-Ereignisse gibt.
Vermisse ich etwas? Hat Java einen Event-Handling-Mechanismus?
Ich bin mir bewusst, dass ich ein Publisher-Abonnentenmuster implementieren kann, aber ich suche nach nativer Unterstützung innerhalb von Java.
Ich erinnere mich an etwas über Java, das Ereignisse in Java 5 oder 6 hinzufügt, aber ich kann mich nicht erinnern, wo ich das gehört habe und ich werde es vielleicht erfinden.
Im Grunde genommen wickle ich ein Gerät in eine Java-Klasse ein, das Gerät löst Ereignisse aus, und ich suche nach dem logischsten Weg, dies zu enthüllen. Ich komme hauptsächlich von einem .Net Hintergrund und ich suche nach etwas wie den Ereignissen in .Net (C #)
Jede Hilfe wäre willkommen.
___ answer436555 ___
Mit dem von anderen hier vorgeschlagenen Subscribe / Publish-Mechanismus können Sie synchrone -Ereignisse implementieren. Für asynchrone Ereignisschleifen (Feuer und Vergessen) Vielleicht möchten Sie sich "Akteure" anschauen. Ein %code% besteht aus einem Handler für Nachrichten (Events) vom Typ A sowie einer Threading-Strategie zur Ausführung des Handlers. Dadurch können Sie gleichzeitig asynchrone Ereignisbehandlung wie folgt durchführen:
%Vor%
Holen Sie sich die Schauspieler-Bibliothek hier.
Siehe den Javadoc hier.
___ answer3357685 ___
___ answer436071 ___
Wie Sie bereits gesagt haben, können Sie genau das gleiche mit dem Publisher-Subscriber / Observer-Muster tun. Es erfordert nur ein bisschen mehr Beinarbeit.
Und nein, Java bietet keine native Unterstützung für Ereignisse, wie dies C # für Delegierte tut.
___ answer436076 ___
Swing oder AWT, die Java-UI-Toolkits, behandeln beide Ereignisse - sehen Sie sich die offizielles Swing-Event-Tutorial für Beispiele. Sie müssen Ihre Benutzeroberfläche natürlich in Swing geschrieben haben, um Listener für diese Ereignisse zu registrieren.
___ answer436170 ___
Ich bin nicht über C # informiert, aber Java Beans, die keine UI-Komponenten sind, können Listener über Zustandsänderungen mithilfe von Events informieren:
Ссылка
Dies war Teil der Java Beans-Spezifikation, seit es herauskam. Merken Sie sich das Datum auf dem Tutorial: es ist Jahrgang 2000.
Die Quelle und der Listener müssen in derselben JVM ausgeführt werden. Sie müssten einen Proxy verwenden, um mit etwas zu kommunizieren, das in einer anderen JVM läuft, aber es könnte gemacht werden.
Ich habe für das C # -Ereignis-Lernprogramm gegoogelt und das gefunden. Javas Registrierung von Listenern und das Abfeuern von Ereignissen mit geänderter Eigenschaft erinnerte mich an das, was ich gesehen habe, als ich das C # -Tutorial überflogen habe. Habe ich etwas Wichtiges vermisst? (Ich gebe zu, dass ich nicht tief gelesen habe - momentan keine Zeit.)
___ antwort437387 ___
Sie können auch die Open-Source-Bibliothek EventBus ansehen, die im Gegensatz zum Standard-Publisher / Abonnenten steht pattern verwendet eine Mediator-Klasse (den Event-Bus), um die im Publisher / Subscriber-Muster erforderliche enge Kopplung zu reduzieren (wobei die Abonnenten alle Publisher kennen müssen, um sich bei ihnen zu registrieren, was nicht immer möglich und oft umständlich ist).
>
Ich habe es in GUI-Anwendungen verwendet, aber es kann mit jeder Art von Ereignis umgehen.
___ answer436182 ___
Es gibt keine native Unterstützung in Java - Sie müssen das Beobachtermuster (auch bekannt als Subcribe / Publish) implementieren ). Es ist ziemlich geradlinig - nicht mehr als ein Dutzend Zeilen Code.
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen.
___ tag123events ___ Ein Ereignis ist eine Möglichkeit für eine Klasse, Benachrichtigungen an Listener zu senden, wenn eine bestimmte Sache passiert.
___ antwort436073 ___
Sie brauchen Threads. Die GUI in Java verfügt über Ereignisse, da es einen dedizierten Thread für zu versendende UI-Ereignisse gibt. Es gibt auch etwas calle "Observer" und "Observable" (dies ist die geschmacksneutrale Version der Event-Listener aus dem GUI-Zeug), aber ist nur das Design-Muster ...
___