首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类变量:公共访问只读,但私有访问读/写

类变量:公共访问只读,但私有访问读/写
EN

Stack Overflow用户
提问于 2013-01-15 03:00:25
回答 4查看 10.3K关注 0票数 4

在我当前的项目中,我有一个类,它将其实例存储在一个变量中。此实例应可由项目中的所有其他类访问,但它只能由其自己的类进行更改。

我如何才能做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-15 03:01:41

编写一个public getter,但不编写public setter。和字段本身的private

票数 18
EN

Stack Overflow用户

发布于 2013-01-15 03:06:43

简而言之,Object的状态在构造后不能改变,这就是所谓的immutable object

String是不可变Class的一个常见示例。

通过以下方式创建一个class immutable -

  • 确保类不会被更改-生成overridden字段,或者使用class工厂并保留构造函数private.
  • make字段private和调用者在单个步骤中完全构造对象,而不是使用no-argument constructor结合后续对setXXX方法的调用。
    • 不提供任何可以以任何方式更改对象状态的方法-不仅仅是setXXX方法,还有任何可以更改状态的方法
    • 如果类有任何可变的对象字段,然后,当它们在类和它的调用者之间传递时,必须进行防御性复制。
票数 4
EN

Stack Overflow用户

发布于 2015-03-14 03:21:12

有人建议"public getter,但no public setter for the private field“。

注意:只有当字段是原语类型时,这才能起作用。

如果它是具有setter的对象,则内容仍然可以修改;因此不是只读的。

看到Java语言提供了一些构造来使返回类型成为只读类型,而不必进行深度复制/克隆,这将是非常有趣的。

我正在想象ReadOnly getEmployee() { ...}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14324805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档