加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 单个对象的protected [package]和private [package]之

发布时间:2020-12-16 18:33:45 所属栏目:安全 来源:网络整理
导读:我试图将对象中存在的方法的访问权限限制为对象所属的包. 该方法由包内的许多类使用.我有两个选择: protected[pkg] object MyObject{....} 要么 private[pkg] object MyObject{....} 它们都工作得很好. 我的问题是,既然对象不能被任何类/对象扩展,那么它们
我试图将对象中存在的方法的访问权限限制为对象所属的包.
该方法由包内的许多类使用.我有两个选择:

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
    }
}

所以重要的是封闭物的可扩展性和访问性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读