Разве эти перечисления не являются неявно статическими и final ?
Экземпляры Enum имеют эти черты.Но никто не сказал, что эти случаи неизменны как Integer
или String
.Таким образом, вы можете изменить значения.
Это не значит, что это рекомендуемая практика!Это не так.
Редактировать
Чтобы объяснить немного больше:
"Enum неявно статично" означает:
enum Foo { FOO };
Здесь FOO
является статическим, хотя синтаксис Java normal предполагает, что FOO
- это переменная экземпляра, ошибочно названная как константа.Вы также получаете к нему доступ как к статической переменной.
«Enum implicitly final» означает:
enum Foo { FOO, BAR };
Foo.FOO = Foo.BAR;
не допускается. ссылка , сохраненная в FOO
, не может быть изменена.Вы также не можете создавать новые экземпляры .
«Enum not implicitly immutable» означает: Foo.FOO
даст вам объект.Стандартный объект.Если объект допускает модификации собственного контента - так и будет.Это не запрещено.