作为这个关于 Scala 的 @BeanProperty 生成更改事件的问题的后续:如何完全实现使用一些自定义注释(例如@Property)注释 var 字段将生成触发属性更改事件所需的代码的行为?唯一的方法就是编写一个编译器插件,对吧?
更一般地说:是否有标准方法(如在 Java 中)在 Scala 的编译器中处理注释?
作为这个关于 Scala 的 @BeanProperty 生成更改事件的问题的后续:如何完全实现使用一些自定义注释(例如@Property)注释 var 字段将生成触发属性更改事件所需的代码的行为?唯一的方法就是编写一个编译器插件,对吧?
更一般地说:是否有标准方法(如在 Java 中)在 Scala 的编译器中处理注释?
可以使用代理来执行此操作,就像在 Java 中一样,可能涉及 cglib 或类似的。编译器插件也可以做到这一点(正如您所说的那样),但如果您编写的不是通用库,则可能有点矫枉过正!
一个更好的解决方案是手动编写 getter 和 setter 方法,以便它们发出这些事件,如果您担心保持代码干净,那么这些总是可以移动到一个 trait 中。
对于解决问题的稍微不同的方法,Naftoli Gugenhem在 GitHub 上有一个“反应式”库来帮助进行函数式反应式编程,可以说是比可观察属性的事件驱动模型更好的范例。
ObservableBuffer 类是开始寻找的好地方。