如何在Scala中创建包私有?

时间:2015-12-17 09:16:54

标签: scala packages access-modifiers

如果我在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

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

3 个答案:

答案 0 :(得分:4)

您不能:软件包不具备访问级别。

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

答案 1 :(得分:-1)

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

希望有所帮助。

答案 2 :(得分:-2)

    You can only define the enclosing package, within which the code is defined

experiments with a http server此处。