我有,其中包括以下金塊的應用程序堆棧跟蹤:
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