我有,其中包括以下金块的应用程序堆栈跟踪:
com.google.inject.internal.util.$ComputationException
是什么在类名的前面的$说明什么?
我有,其中包括以下金块的应用程序堆栈跟踪:
com.google.inject.internal.util.$ComputationException
是什么在类名的前面的$说明什么?
这意味着ComputationException
包含在另一个类中,否则不能公开显示。
$字符只能用于机械生成的源代码,或者很少用于访问传统系统上的预先存在的名称。
在Java内部,$
字符被认为是一个有效的标识符字符,就像字母或数字。然而,编译器在生成内部类之类的东西时通常在内部使用它。
Java的字母包括大写和小写的ASCII拉丁字母
A-Z
(\u0041-\u005a
)和a-z
(\u0061-\u007a
),并且,由于历史原因,ASCII下划线(_
,或\u005f
)和美元符号($
或\u0024
)。$
字符只能用于机械生成的源代码,或者很少用于访问传统系统上的预先存在的名称。
这看起来不是内部类,因为$ – emmby 2012-01-29 04:50:35
之前没有“外部”类名您在问关于编译器关于合成类命名的内部决策。在编译器做出的决定之外,'$'及其位置并不意味着什么。 – 2012-01-29 04:56:23
如果ComputationException被包含在另一个类中,那么其他类的名称不会在$?之前。 – emmby 2012-01-29 04:42:26
@emmby是的。由于这是一个位于“inject.internal”命名空间的google软件包,因此我会继续说它是通过内部的巫术生成的。我不能告诉你班上的目的是什么,只有$意味着什么...而这就是“这不是人类写的公开课”。 – Borealid 2012-01-29 04:46:42