最后一类是不能被子类化的类.类定义的final关键字不一定使该类不可变.所以你的类不必是最终的,因为它的实例是不可变的(你的问题暗示你正在使类最终,注意final可以用来修改不仅仅是类).但是,如果您创建一个类final,该类不能被子类化,那么您可以保证不会创建任何可变子类.
不变性只是意味着不能改变课堂上的任何价值观.所以私人领域,没有非私人制定者应该这样做.一个常见的问题是,如果您的类具有Collection,则必须返回某种不可修改的集合,否则可以更改集合中的值,即使没有人可以更改对该集合的引用.这回答了你问题的第二部分.如果final myCollection在你的类上声明一个,你不能改变对myCollection的引用,但你仍然可以在类之外修改集合,如果你有一个getter(很好)并且不返回一个不可修改的集合.请参阅http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#unmodifiableCollection(java.util.Collection)
关于不变性,请记住,一旦最初设置了值,目标就是无法更改类的实例.使用final关键字可以提供帮助,但本身并不足以拥有不可变的定义.
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |