Scala 2.9 中限制类构造函数的可见性

发布于 2024-11-07 21:09:15 字数 553 浏览 0 评论 0原文

您好,

如何使 Foo 构造函数仅对此包(单元测试+伴随对象)可见?

我不想在这 2 个文件之外实例化 Foo...

Foo.scala

package project.foo

class Foo(val value: String)

object Foo {
  def generate: Foo = new Foo("test")
}

FooSpec.scala

package project.foo

import org.spec2.mutable._

class FooSpec extends Specification {
  "Foo" should {
    "be constructed with a string" {
      val foo = new Foo("test")
      foo.value must be "test"
    }
  }
}

我正在使用 Scala 2.9

Greetings,

How can I make the Foo constructor visible only to this package (unit test + companion object) ?

I don't want to be able to instantiate Foo outside of this 2 files...

Foo.scala

package project.foo

class Foo(val value: String)

object Foo {
  def generate: Foo = new Foo("test")
}

FooSpec.scala

package project.foo

import org.spec2.mutable._

class FooSpec extends Specification {
  "Foo" should {
    "be constructed with a string" {
      val foo = new Foo("test")
      foo.value must be "test"
    }
  }
}

I'm using Scala 2.9

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风挽心 2024-11-14 21:09:15

试试这个:

package project.foo
class Foo private[foo] (value: String)

那么 Foo 的构造函数只能从 foo 包中访问。

您可以在此处阅读有关 Scala 可见性的更多信息(特别是范围内私有和范围内受保护)< /a>.

Try this:

package project.foo
class Foo private[foo] (value: String)

Then the constructor of Foo is only accessible from the foo package.

You can read more about Scala's visibility (look especially for scoped private and scoped protected) here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文