如何在Java中实现类似于C#的语言级事件

C#具有语言级别的事件概念,使用保留关键字eventdelegate来定义发布者和订阅者方法。 有人问过Java是否有本机支持,但答案显然是否定的。 有几种选择 ,包括使用AWT / Swing样式事件,构建我自己的Observer模式或使用其他发布/订阅方式。 这是可能的,但正如一个答案所说,“只需要更多的腿部工作。”

通常,任何实现都遵循相同的类型方法并且可以是自动化的。 Java具有不同的元编程机制,例如AOP或AST转换。 如何在Java中实现C#事件以允许尽可能少的“legwork”?

也许Project Lombok ?

如果您有分布式环境,请使用Akka 。

否则你有几个选择

番石榴有EvenBus 。 Guava将是我的选择,因为它已成为Java项目使用的核心库之一,如apache commons,slf4j等。

谷歌搜索“java事件库”揭示了更多选择。

否则,编写一个包含订阅者的类,并在事件进入时向他们发送事件。容易,但要小心并发。