java类名中的$prefix是什么意思?

java类名中的$prefix是什么意思?,java,Java,我有一个应用程序的stacktrace,其中包括以下要点: com.google.inject.internal.util.$ComputationException 类名前面的$表示什么?这意味着计算异常包含在另一个类中,或者不公开 请参阅。仅在机械生成的源代码中使用$字符,或者很少用于访问遗留系统上现有的名称。在Java内部,与字母或数字一样,$字符被视为有效的标识符字符。但是,编译器在生成诸如内部类之类的内容时通常在内部使用它 从: Java字母包括大写和小写的ASCII拉丁字母A-Z(

我有一个应用程序的stacktrace,其中包括以下要点:

com.google.inject.internal.util.$ComputationException

类名前面的$表示什么?

这意味着
计算异常
包含在另一个类中,或者不公开


请参阅。

仅在机械生成的源代码中使用$字符,或者很少用于访问遗留系统上现有的名称。

在Java内部,与字母或数字一样,
$
字符被视为有效的标识符字符。但是,编译器在生成诸如内部类之类的内容时通常在内部使用它

从:

Java字母包括大写和小写的ASCII拉丁字母
A-Z
\u0041-\u005a
)和
A-Z
\u0061-\u007a
),并且由于历史原因,ASCII下划线(
\u
,或
\u005f
)和美元符号(
$/code>,或
\u0024
)。
$
字符应仅在机械生成的源代码中使用,或者很少用于访问遗留系统上先前存在的名称


看起来像是Google(Guice,GSON)用来区分内部类型的约定。

如果ComputationException包含在另一个类中,那么另一个类的名称不在$?@emmby Yes之前吗。因为这是一个位于“inject.internal”名称空间中的google包,所以我要继续说,它是通过一些内部巫术生成的。我不能告诉你这门课的目的是什么,只有美元意味着什么。。。这是“这不是一个人工编写的公共类”。这似乎不是一个内部类,因为在您要询问的关于编译器关于合成类命名的内部决定的$之前没有“外部”类名。在编译器所做的决定之外,
$
及其位置没有任何意义。