C#具有events on a language level的概念,使用保留关键字event
和delegate
来定义发布者和订阅者方法。它一直是asked if Java has native support for that,但答案显然是否定的。还有一些several alternatives,包括使用AWT/Swing样式的事件、构建我自己的Observer pattern或使用其他发布/订阅方式。这是可能的,但正如一个答案所说,“只是需要更多的跑腿工作。”
一般来说,任何实现都遵循相同的类型化方法,并且可以自动化。Java有不同的元编程机制,例如AOP或AST转换。如何在Java语言中实现C#事件,以允许尽可能少的“跑腿”?
也许是Project Lombok
发布于 2014-01-09 06:02:27
如果您有一个分布式环境,请使用Akka。
否则你有几个选择
芭乐有EvenBus。Guava将是我的选择,因为它已经成为Java项目使用的核心库之一,如apache commons、slf4j等。
谷歌搜索"java event library“可以找到更多的选择。
否则,编写一个保存订阅者的类,并在订阅者传入时将事件分派给它们。这很简单,但要小心并发。
https://stackoverflow.com/questions/21007276
复制相似问题