问候,
如何使Foo构造函数仅对此包(单元测试+伴随对象)可见?
我不希望能够在这两个文件之外实例化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
答案 0 :(得分:17)
试试这个:
package project.foo
class Foo private[foo] (value: String)
然后Foo
的构造函数只能从foo
包中访问。
您可以阅读有关Scala可见性的更多信息(特别注意作用域的私有和作用域保护)here。