2011-02-27 49 views

回答

4

這是一個「類文字」 - 一種獲取Class<T>代表MyClass的實例的方法。它將給出與在MyClass類型的對象的實例方法中調用this.getClass()相同的結果。

Java語言規範,section 15.8.2具有更多的細節:

字面的類組成的一類,接口,數組或基本類型或僞型空隙的名稱的,表達隨後通過.和令牌類。類類型的文字C.Class,其中C是類,接口或數組類型的名稱,爲Class<C>。如果p是基本類型的名稱,則讓B爲裝箱轉換後的類型p的表達式的類型(第5.1.7節)。那麼p.class的類型是Class<B>。 void.class的類型是Class。

類的字面值根據當前實例的類的定義類加載器的定義,對指定類型(或void)的Class對象進行求值。

+0

這和typeof相似嗎?在C#版本log4n中,我們使用GetLogger(typeof(MyClass)) – user496949 2011-02-27 08:41:05

+1

@ user496949:是的,它基本上是'typeof'的Java版本。 – 2011-02-27 08:58:09

0

Logger.getLogger(MyClass.class)用於獲取您的類的全名(稱爲「com.you.package.MyClass」),並且該字符串用於配置此Logger對象。 (更多具體的說明(比如說「com.you.package」)會覆蓋來自較高層的指令(比如說「com.you」)。Log4j使用層次結構來確定給定記錄器的操作。詳情請參閱配置文件。

+0

任何文檔? – user496949 2011-02-27 08:37:22

+0

log4j手冊是您可能想要購買的書。有一個簡短的版本可在http://logging.apache.org/log4j/1.2/manual.html – 2011-02-27 08:39:19

+0

我確實認爲這是一個真正的Java語言問題。 – user496949 2011-02-27 08:47:18

1

.class是一個屬性,它返回類本身的運行時實例。你可以在What is a class literal in Java?找到更多的信息。

在log4j中,可以爲不同的類配置不同的記錄器,因此當您使用該類實例化記錄器時,可以控制每個類的日誌級別,appender和其他配置。