att*_*182 2 java final private public immutability
Effective Java中的第15项规定,建议使用私有final字段作为不可变对象中的公共final字段,因为它可能会阻止更改后续版本中的内部表示.
我无法理解突出显示的部分 - 我无法看到更改访问说明符可能导致问题的情况.有人可以为此提供一个例子吗?
这不仅仅是改变访问说明符 - 您可能会更改内部表示的所有内容.
假设您有三个byte
值作为对象状态的一部分.您可以将它们存储在单个int
字段中,也可以将它们存储在三个byte
字段中.如果您将字段(或字段)保密,仅提供对状态的访问权限,则可以稍后更改实施.如果您使用公共字段,则您的存储详细信息将成为您的类的API的一部分,并且在不破坏兼容性的情况下无法更改.
您的类如何存储状态应该是一个实现细节,隐藏在外部世界以便将来的灵活性.
(这不仅仅是一个理论问题.作为一个例子,在我的.NET中的Noda Time项目中,我的v2.0版本将从根本上改变日期和时间的存储细节.如果我将状态作为字段提供,这将是一个巨大的突破性变化.因为我已经使用了属性,这种变化对用户来说完全透明,而不是提高性能.)
归档时间: |
|
查看次数: |
727 次 |
最近记录: |