【发布时间】:2014-01-27 05:45:15
【问题描述】:
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# 事件以尽可能减少“跑腿”?
【问题讨论】:
-
顺便说一句,别忘了你需要支持
MultiCastDelegate并且能够使用The + Operator 或类似的方式组合代表。 -
是的,我知道它可以多播,但不必是
+运算符 - 显然支持不会是语言级别的。 -
我一直在想这个问题,编写 android 应用程序,我真的不喜欢匿名回调接口,而且所有的内联(尤其是我没有写的那些)都是一大堆我相信
-
@PeterKofler 老兄,java 落后了 15 年,而 C# 无处不在。有 Mono、Xamarin for Android、iOS、OSX 等等。为了使 java 成为一种体面的语言,您需要付出的努力远远超过 1000 美元的 Xamarin 许可证。获得其中之一并永远忘记 java
-
@Zefnus 不要忘记LINQ、async/await、type inference、real properties、extension methods 和真正的泛型,而不是奇怪的“类型擦除”东西。更不用说upcoming features 之类的单子空值检查...