【问题标题】:Scala package object getClassScala 包对象 getClass
【发布时间】:2017-01-10 04:59:55
【问题描述】:

我想为 Scala 包对象获取 java.lang.Class

app/package.scala:

package object app {
}

app/Main.scala:

打包应用

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

编译失败:

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

【问题讨论】:

    标签: java scala


    【解决方案1】:

    感谢 Nyavro 的回答。

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

    package object app {
      val instance = this
    }
    

    并像这样使用它:

    app.instance.getClass
    

    【讨论】:

      【解决方案2】:

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

      package object app {
        def cls = getClass
      }
      

      【讨论】:

        猜你喜欢
        • 2017-01-17
        • 2017-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-18
        • 2013-12-17
        • 2015-03-21
        相关资源
        最近更新 更多