可能重复:
Scala equivalent of Java java.lang.Class<T> Object不能调用Java classname.class斯卡拉
大家好,
我不能在Scala中调用Java classname.class方法,但斯卡拉保证我可以在scala中调用任何java方法,所以为什么我不能调用ClassName.class方法
Jeff Zhang
可能重复:
Scala equivalent of Java java.lang.Class<T> Object不能调用Java classname.class斯卡拉
大家好,
我不能在Scala中调用Java classname.class方法,但斯卡拉保证我可以在scala中调用任何java方法,所以为什么我不能调用ClassName.class方法
Jeff Zhang
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不像某些语言,它不具有元类。
对于A
类,只需使用classOf[A]
来获取类对象。
请参阅:http://stackoverflow.com/questions/1135248/scala-equivalent-of-java-java-lang-classt-object – dlev 2011-05-25 05:35:13