2012-01-29 75 views
3

我有,其中包括以下金塊的應用程序堆棧跟蹤:

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

是什麼在類名的前面的$說明什麼?

回答

4

這意味着ComputationException包含在另一個類中,否則不能公開顯示。

請參閱http://www.retrologic.com/innerclasses.doc7.html

+0

如果ComputationException被包含在另一個類中,那麼其他類的名稱不會在$?之前。 – emmby 2012-01-29 04:42:26

+1

@emmby是的。由於這是一個位於「inject.internal」命名空間的google軟件包,因此我會繼續說它是通過內部的巫術生成的。我不能告訴你班上的目的是什麼,只有$意味着什麼...而這就是「這不是人類寫的公開課」。 – Borealid 2012-01-29 04:46:42

3

$字符只能用於機械生成的源代碼,或者很少用於訪問傳統系統上的預先存在的名稱。

5

在Java內部,$字符被認爲是一個有效的標識符字符,就像字母或數字。然而,編譯器在生成內部類之類的東西時通常在內部使用它。

Java Language Specification

Java的字母包括大寫和小寫的ASCII拉丁字母A-Z\u0041-\u005a)和a-z\u0061-\u007a),並且,由於歷史原因,ASCII下劃線(_,或\u005f)和美元符號($\u0024)。 $字符只能用於機械生成的源代碼,或者很少用於訪問傳統系統上的預先存在的名稱。

+0

這看起來不是內部類,因爲$ – emmby 2012-01-29 04:50:35

+1

之前沒有「外部」類名您在問關於編譯器關於合成類命名的內部決策。在編譯器做出的決定之外,'$'及其位置並不意味着什麼。 – 2012-01-29 04:56:23