问候,
如何使Foo构造函数仅对此包(单元测试+伴随对象)可见?
我不希望能够在这2个文件之外实例化Foo ...
Foo.scala
package project.foo
class Foo(val value: String)
object Foo {
def generate: Foo = new Foo("test")
}
Run Code Online (Sandbox Code Playgroud)
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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Scala 2.9
Jea*_*let 17
试试这个:
package project.foo
class Foo private[foo] (value: String)
Run Code Online (Sandbox Code Playgroud)
然后Foo只能从foo包中访问构造函数.
您可以在此处详细了解Scala的可见性(特别是对于作用域的私有和作用域保护).