2012-07-24 91 views
2

當我們同步一些靜態方法時,class.class上獲得了類鎖 那麼class.class代表什麼,通過google搜索和通過一些論壇閱讀我來了解它的java.lang.Class的實例對於內存中的所有類,都存在一個與它們關聯的java.lang.Class實例。是嗎??class.class代表什麼意思

可以用這個創建該類的對象並獲得對此的鎖定,除此之外,它提供的所有主要功能在我的常規Java應用程序中是否有用?

歡迎任何參考鏈接。謝謝!!

回答

1

...其實例java.lang.Class對於內存中的所有類,存在與其關聯的一個java.lang.Class實例。

基本上,是的,雖然我認爲它是每個類加載器的一個副本,而不是總數。但正如您通常只有一個類加載器...

Class實例代表整個類,與其他類不同,正如類的實例與該類的所有其他實例不同。因此,由於靜態方法是特定於類的(就像非靜態方法特定於實例一樣),因此在調用靜態方法(如果方法需要同步)時同步類實例是有意義的。這就是爲什麼如果您將​​關鍵字作爲整體應用於該方法,那麼JLS會發生這種情況。