Scala包对象getClass

时间:2016-09-02 07:07:04

标签: java scala

我想获得Scala包对象的java.lang.Class

应用程序/ package.scala:

package object app {
}

应用程序/ Main.scala:

包应用

object Main extends App {
  val _ = app.getClass
}

编译失败:

  

对象getClass不是包app的成员请注意app扩展   任何,不是AnyRef。这些类型可以参与价值类,但是   实例不能出现在单例类型或引用中   比较。

2 个答案:

答案 0 :(得分:3)

您可以在app返回类中定义方法:

package object app {
  def cls = getClass
}

答案 1 :(得分:2)

感谢Nyavro的回答。

似乎package对象限制从外部访问其内置成员,并获得对包对象的完全访问权限,我们可以执行以下操作:

package object app {
  val instance = this
}

并使用它:

app.instance.getClass