在 IntelliJ IDEA 中调试 Java 期间生成的变量名称中的美元符号是什么意思?是闭包吗?

What does dollar sign mean in generated variable names during debugging Java in InteliJ IDEA ? Is it a closure?

在 InteliJ 中调试 Java 期间变量名称中的美元符号是什么意思?是闭包吗?请查看下面的图片和代码片段。

这是流的一部分 class:

public final Listener listen(final Handler<A> action) {
    return listen_(Node.NULL, new TransactionHandler<A>() {
        public void run(Transaction trans2, A a) {
            action.run(a);
        }
    });
}

我怀疑Stream@915中的指的是上面方法中创建的闭包。不过我不确定。有人可以证实这一点吗?或者,如果不是这种情况,请解释此生成的名称中美元符号的含义?

code 取自 Sodium Functional Reactive 库,我正在尝试了解它的工作原理。

它是对匿名内部 class 的引用,它是由类似闭包的构造生成的。一般来说,内部classes 被编译,class 文件名将是yourClassName$yourInnerClassName。在匿名内部 class 声明的情况下,由于您没有明确命名它,它将显示为使用数字生成的名称。也许这个 article 会有帮助?