【问题标题】:How do I make a package in Scala private?如何将 Scala 中的包设为私有?
【发布时间】:2016-03-23 16:41:19
【问题描述】:

如果我在 Scala 中有这样的包层次结构:

package toplevel {
  package a {
    // some interesting stuff
  }

  package b {
    // more interesting stuff
  }

  package utility {
    // stuff that should not be accessible from the outside
    // and is not logically related to the project,
    // basically some helper objects
  }
}

如何禁止toplevel包的用户查看或导入包utility

我尝试使用private[toplevel] package utility { ...,但收到此错误:expected start of definition

我已经搜索过这个并且被误报所淹没:我得到的一切都是关于将事情包私有化,这不是我的问题。

【问题讨论】:

  • 为什么需要那个实用程序包?私有对象不是更适合那里吗?
  • 我需要这个包来放置一些元数据,以简化其他包的开发。这些东西可能应该在一个单独的库中,但我们不想要额外的依赖项。我希望它是一个包,因为它已经包含 6 个对象/类,可能还会有更多。将它们全部放在一个对象中意味着它们必须在同一个文件中,这会变得太混乱。

标签: scala packages access-modifiers


【解决方案1】:

你不能:包没有访问级别。

或者更确切地说,您可以使用OSGi 而不导出它们,但如果您出于其他原因也不需要它,这是一个非常重量级的解决方案。

【讨论】:

    【解决方案2】:

    要达到与 Java 中的私有包相同的目标,您可以使用增强的访问修饰符。在您的包实用程序中,您可以使用 private[utility] 限制访问。这样,包成员仅在包实用程序本身内部可用。

    希望对您有所帮助。

    【讨论】:

    • 问题是如何使整个包私有,而不是如何使单个类包私有。
    【解决方案3】:
        You can only define the enclosing package, within which the code is defined
    

    Answered 在这里。

    【讨论】:

    • 问题是如何使整个包私有,而不是如何使单个类包私有。
    猜你喜欢
    • 1970-01-01
    • 2011-10-23
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2022-01-19
    • 2021-12-13
    相关资源
    最近更新 更多