在 IntelliJ IDEA 中调试 Java 期间生成的变量名称中的美元符号是啥意思?是闭包吗?
Posted
技术标签:
【中文标题】在 IntelliJ IDEA 中调试 Java 期间生成的变量名称中的美元符号是啥意思?是闭包吗?【英文标题】:What does dollar sign mean in generated variable names during debugging Java in InteliJ IDEA ? Is it a closure?在 IntelliJ IDEA 中调试 Java 期间生成的变量名称中的美元符号是什么意思?是闭包吗? 【发布时间】:2015-02-11 01:46:02 【问题描述】:在 InteliJ 中调试 Java 期间,变量名中的美元符号是什么意思?是闭包吗?请看下面的图片和代码sn-p。
这是 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);
);
我怀疑Stream$1@915
中的$1
指的是上面方法中创建的闭包。不过我不确定。有人可以证实这一点吗?或者,如果不是这种情况,请解释生成的名称中美元符号的含义?
code 取自 Sodium Functional Reactive 库,我正在尝试了解它的工作原理。
【问题讨论】:
java compiled classes contain dollar signs 的可能副本,也可能是 What is the meaning of $ in a variable name?。 谢谢!我在 SOF 上搜索了答案,但一无所获,可能是我搜索的关键字错误。 【参考方案1】:它是一个匿名内部类的引用,它是由这个闭包结构生成的。一般来说,编译内部类,类文件名将是yourClassName$yourInnerClassName
。在匿名内部类声明的情况下,由于您没有明确命名它,它将显示为使用数字生成的名称。也许这个article 会有所帮助?
【讨论】:
感谢您的解释。以上是关于在 IntelliJ IDEA 中调试 Java 期间生成的变量名称中的美元符号是啥意思?是闭包吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 10 上使用 Intellij IDEA 在 WSL 2 中运行和调试 Java
IDEA Intellij 如何调试从 Java 类调用的 PL/SQL 代码
IntelliJ IDEA中如何优雅的调试Java Stream操作
IntelliJ IDEA中如何优雅的调试Java Stream操作