2011-05-25 68 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]来获取类对象。