gpt4 book ai didi

java - 是否可以/可能修改枚举声明中的实例变量?

转载 作者:行者123 更新时间:2023-12-01 19:19:19 26 4
gpt4 key购买 nike

或者,重新表述一下:枚举类型可以是“可变的”吗?

public enum Foo {
ONE,TWO;

private String bar;

Foo() { this.bar = ""; }
String bar() { return bar; }

// legal?
void bar(String bar) { this.bar = bar; }
}

我想如果我想修改它,它就不再是枚举类型了。

想法?

最佳答案

这绝对有效。这真是个坏主意。调用者可能期望枚举是完全不可变的。在某些情况下,您可能希望使其“看起来”是不可变的,例如使用缓存,同时仍然改变内部变量......但这很大程度上是一种边缘情况。

至于为什么 Java 允许你这样做......即使它强制所有成员变量都是最终的,这也不会使枚举值真正不可变......例如,你可以有一个List<String>每次调用特定方法时都会对其进行修改...

从根本上来说,Java 不太擅长强制不变性。

关于java - 是否可以/可能修改枚举声明中的实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5082227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com