【问题标题】:Can not call Java classname.class in scala [duplicate]无法在scala中调用Java classname.class [重复]
【发布时间】:2011-09-01 11:20:51
【问题描述】:

可能重复:
Scala equivalent of Java java.lang.Class<T> Object

大家好,

我在scala中不能调用java的classname.class方法,但是scala保证我可以调用scala中的任何java方法,所以为什么我不能调用ClassName.class方法

张杰

【问题讨论】:

标签: scala


【解决方案1】:

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 没有元类。

【讨论】:

    【解决方案2】:

    对于A 类,只需使用classOf[A] 来获取类对象。

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多