假设在我的纯 Scala 程序中,我依赖于 Java 服务。此 Java 服务接受一个侦听器,以便在某些数据更改时通知我。
假设数据是一个元组(x,y),只要 X 或 Y 发生变化,java 服务就会调用监听器,但我只对 X 感兴趣。
为此,我的侦听器必须保存 X 的最后一个值,并仅在 oldX != X 时转发更新/调用,所以为了实现这一点,我的不纯 scala 侦听器实现必须保存一个 var oldX
val listener = new JavaServiceListener() {
var oldX;
def updated(val x, val y): Unit = {
if (oldX != x) {
oldX = x
//do stuff
}
}
javaService.register(listener)
如果没有 val 或 mutable 集合,我将如何在 Scala 中为这种东西设计一个包装器?我不能在 JavaServiceListener 级别,因为我受方法签名的约束,所以我需要另一个层,Java 侦听器以某种方式转发到该层