4

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

这是 Stream 类的一部分:

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);
        }
    });
}

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

代码取自 Sodium Functional Reactive 库,我试图了解它是如何工作的。

在此处输入图像描述

4

1 回答 1

7

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

于 2015-02-11T01:50:21.950 回答