On 5/21/21 10:28 AM, Kasper Nielsen wrote:
On Fri, 21 May 2021 at 14:51, Alberto Otero Rodríguez <albest...@hotmail.com>
wrote:
Hi,
I think enums in Java should be immutable. When you let the programmer
change values in an enum instance, an unexpected behaviour can happen when
using multiple threads as enum instances are static (singleton).
So, I was wondering why not make enums instances be defined as records
instead of normal classes.
Lots of reasons, for example:
* It would be a breaking change for an almost non-existent problem.
* All internal state of enums would now be public.
* Enum's extend java.lang.Enum, records extend java.lang.Record.
java.lang.Enum cannot extend java.lang.Record because it has instance
fields.
/Kasper
I could add that making enum records would not solve the proposed
"problem" because records are shallowly immutable.
I am sure that theoretically, simple enum implementations could be
treated by the JIT internally as simple indexes as an optimization, I
don't know if it does something like that already. So I don't think
records will bring any improvement to enums