在 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 会有帮助?
在 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 会有帮助?