我在代码中使用了Builder Pattern
类,该类按书生成对象为immutable
。
我的一点怀疑是与枚举Size
成员:
public class Pizza {
private final Size size;
private final boolean isExtraCheese;
private final boolean isPeperonni;
private final boolean isBacon;
public enum Size {
SMALL, MEDIUM, BIG
}
}
如果枚举被视为常量,为什么还要添加
final
关键字?这里有必要吗? 最佳答案
enum
的成员是常量,但是引用枚举值的引用变量与其他引用变量一样,因此需要将它们标记为final
。
您可以这样做:
private Size size = Size.BIG;
size = Size.SMALL;
但是将
size
标记为final将阻止第二次分配。private final Size size = Size.BIG;
size = Size.SMALL; // this will not be allowed
请记住,您正在将类型为
Size
的引用变量标记为最终变量,而不是enum
Size
本身。关于java - 是否有必要将Enum成员声明为最终成员以实现不变性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39062483/