Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Java Event-Verarbeitung

  Alt 23. Nov 2011, 14:42
Meiner Meinung nach sollte eine (neue) Programmiersprache die Bearbeitung
von Standardaufgaben (siehe Event-Behandlung) für den Anwender so einfach...
Wie der Feuervogel schon sagte: Java ist nicht neu. Und das Eventhandling ist in Java nicht der Bringer. Das sieht man nicht nur so, wenn man von Delphi kommt, das sehen auch die Hardcore-Javaisten so. Such mal in JavaForen danach. Dort lunscht man dann meist zu .Net rüber und beneidet die C#-Entwickler mit ihren Delegates. Und zudem hofft man mit jeder neuen Java-Version. Aber IMHO hat die 7er diesbezüglich nichts geändert.

Ich bin zwar kein Java-Fachmann, aber so sollte es gehen:
Interface deklarieren
Code:
public interface SimpleEvent {
   public void event(int NR) ;

}
Interface implementieren:
Code:
public class Foo implements SimpleEvent{
   

   /* (non-Javadoc)
    *  Diese Klasse kann noch vieles anderes machen....
    */

   public void event(int NR) {
            system.out.print("ich bin gefeuert mit " + NR);
   }
}
Klasse, die Event feuert:
Code:
public class ichMelde {
        private SimpleEvent simpleEvent; /* Feld zum merken des Events*/
       
        public void setEvent(SimpleEvent e) {
             simpleEvent=e;
        }
       
        void fire() {
            simpleEvent.event(42);
        }
}
und wie du jetzt siehst, kannst du bei ichMelde.setEvent eine Klasse (hier: Foo) angeben, die ein Ereignis behandelt und das entsprechende Interface auch implementiert.

Meist wird zu einem Interface auch noch eine leere Klasse erstellt (die also alle Methoden des Interfaces implementiert, aber ohne was zu tun:  begin end; halt). Diese Klasse kann man dann zum aufbauen einer anonymen Methode verwenden. Auch einm häufig gesehenes Beispiel für einen Event-Handler, wenns mal "schnell" gehen muss.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.

Geändert von sirius (23. Nov 2011 um 14:59 Uhr)
  Mit Zitat antworten Zitat