Alternate of C# Events in Java

Viewed 13036

I am .Net developer. i want to know that is there any event handling mechanism in Java for Events Handling like C#.

what i want to do is i want to raise/fire an event form my class upon some condition. and consumer of this class should register that event and write event handling method.

this can be done easily in C#. i have to implement this thing in Java.

after googling out i found some links but all those are talking about GUI events in AWT and swing.

can any one help me out.

4 Answers

I love C# Events,

They are simple to use and convenient. i missed them in java so wrote a small utility class that mimics the very basics of C# Event.

  • using java 8 (for lambdas)
  • no += operator, instead call .addListener((x) -> ...)
  • to trigger an event, call .broadcast(<EventArgs insance>)

Online Demo - https://repl.it/DvEo/2


Event.java

import java.util.HashSet;
import java.util.Set;
import java.util.function.Consumer;

public class Event {
    private Set<Consumer<EventArgs>> listeners = new HashSet();

    public void addListener(Consumer<EventArgs> listener) {
        listeners.add(listener);
    }

    public void broadcast(EventArgs args) {
        listeners.forEach(x -> x.accept(args));
    }
}
  • You may want com.google.common.collect.Sets.newConcurrentHashSet() for thread safety

EventArgs.java

public class EventArgs {
}
Related