2011-05-25 36 views

回答

4

T.class實際上不是一種方法或字段,而是一種特殊形式,它指示Java編譯器指出您正在引用類的運行時表示。 Scala中的等價特殊形式是classOf [T]。

您的主題提出了一個不同的問題,即如果您可以爲任何對象調用.getClass()。答案是肯定的,但是它做了一些不同的事情 - 對於給定的T類實例,它給了你T,所以儘管最終你仍然得到了運行時表示T,但起點不同 - - T的一個實例,而不是代表T本身的名稱/符號。請注意,T.class.getClass()(或Scala中的classOf [T] .getClass)將始終爲您提供任何T的java.lang.Class的運行時表示。可笑的是,這個既是java.lang.Class的運行時表示,也是java.lang.Class本身的一個實例,因爲Java不像某些語言,它不具有元類。

1

對於A類,只需使用classOf[A]來獲取類對象。