可变和不可变类

nab*_*bil 3 java oop mutable immutability

我想在java中创建可变和不可变节点,除了可变之外,两者都应该是相同的。如何实现基类和可变类和不可变类的两个派生类?

Mar*_*ers 5

可变类和不可变类之间的区别在于,不可变类没有设置器或任何其他修改内部状态的方法。状态只能在构造函数中设置。

将父类称为 Immutable 将是一个坏主意,因为当您有子类时,这将不再成立。该名称会产生误导:

ImmutableNode node = new MutableNode();
((MutableNode)node).change();
Run Code Online (Sandbox Code Playgroud)

  • @myx --- bzzztt。您可以通过反射更改最终变量......除了符合编译时常量表达式的静态最终字段。但是,通过反射更改私有和/或最终变量被视为 BAD BAD 实践......并且只能作为绝望的最后措施来完成。 (2认同)