0

一个类的不变性是否只取决于它的字段?

如果一个类有一个没有标记为final但标记为“静态类”的成员类,并且这个内部类的成员也是final的,,并且封闭的外部类的所有字段都标记为final,那么不变性将如何被描述为外部类?

4

1 回答 1

1

不,这不取决于。

从更广泛的意义上说,如果任何时候所有方法调用都将返回相同的结果,则一个类是不可变的。

很好的例子是java.lang.String类,当你第一次调用时hashcode字段被改变了,但是返回的结果是一样的hashcode()

更严格的解释是初始化后不能更改任何字段。例如,可以通过不声明公共设置器并避免在类内部进行任何更改来实现它。另一种方法是 - 正如你提到的 - 将字段声明为final.

于 2013-06-17T09:26:22.600 回答