Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
一个类的不变性是否只取决于它的字段?
如果一个类有一个没有标记为final但标记为“静态类”的成员类,并且这个内部类的成员也是final的,,并且封闭的外部类的所有字段都标记为final,那么不变性将如何被描述为外部类?
不,这不取决于。
从更广泛的意义上说,如果任何时候所有方法调用都将返回相同的结果,则一个类是不可变的。
很好的例子是java.lang.String类,当你第一次调用时hashcode字段被改变了,但是返回的结果是一样的。hashcode()
java.lang.String
hashcode
hashcode()
更严格的解释是初始化后不能更改任何字段。例如,可以通过不声明公共设置器并避免在类内部进行任何更改来实现它。另一种方法是 - 正如你提到的 - 将字段声明为final.
final.