gpt4 book ai didi

scala - 单例对象的 protected[package] 和 private[package] 之间的区别

转载 作者:行者123 更新时间:2023-12-04 21:15:08 25 4
gpt4 key购买 nike

我试图将对象中存在的方法的访问限制为该对象所属的包。
该方法被包内的许多类使用。我有两个选择:

protected[pkg] object MyObject{....}

或者
private[pkg] object MyObject{....}

他们两个都工作得很好。
我的问题是,既然一个对象无论如何都不能被任何类/对象扩展,它们不是等价的吗?

最佳答案

顶级,是的,它们最终在 Java 中是公开的(不是默认访问)。

但是也:

package accesstest {
trait T {
protected[accesstest] object Foo { def foo = 7 }
private[accesstest] object Bar { def bar = 8 }
}

object Test extends App {
val t = new T {}
Console println t.Foo.foo
Console println t.Bar.bar
Console println other.Other.foo
}
}
package other {
object Other extends accesstest.T {
def foo = Foo.foo
//def bar = Bar.bar // nope
}
}

因此,重要的是封闭事物的可扩展性和可访问性。

关于scala - 单例对象的 protected[package] 和 private[package] 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25682673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com