我在代码中使用了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/

10-11 00:57
查看更多