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 ?
最佳答案
如果您有分布式环境,请使用 Akka .
否则你有几个选择
Guava 有 EvenBus . Guava 是我的选择,因为它已经成为 Java 项目使用的核心库之一,如 apache commons、slf4j 等。
Google 搜索“java event library”会显示更多选择。
否则,编写一个类来保存订阅者并在他们进入时将事件分派(dispatch)给他们。简单,但要注意并发性。
关于c# - 如何在Java中实现类似C#的语言级事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21007276/