I have created myself a project with a possible implementation of Immutable Collections using the source code of Java 17.
https://github.com/Aliuken/JavaImmutableCollections [https://opengraph.githubassets.com/b1aeb5022614cc86e9ca7b0effe8a6298ce1ba62fee0b97021af3ff40e505cea/Aliuken/JavaImmutableCollections]<https://github.com/Aliuken/JavaImmutableCollections> GitHub - Aliuken/JavaImmutableCollections<https://github.com/Aliuken/JavaImmutableCollections> Contribute to Aliuken/JavaImmutableCollections development by creating an account on GitHub. github.com ________________________________ De: Alberto Otero Rodríguez <albest...@hotmail.com> Enviado: jueves, 25 de noviembre de 2021 9:39 Para: Justin Dekeyser <justin.dekey...@gmail.com> Cc: core-libs-dev@openjdk.java.net <core-libs-dev@openjdk.java.net> Asunto: RE: Adding an @Immutable annotation to Java I have not thought about that. I'm not a Java expert. I just throwed the idea precisely to avoid "fake immutability", because a programmer could think one record is immutable simply by being a record, while this is false. There are probably lots of problems that need to be taken in consideration (like inheritance). But I just throw the idea because I think it would be a desirable feature. I would be grateful if some expert could deepen in possible problems and their solutions. Regards, Alberto Otero Rodríguez. ________________________________ De: Justin Dekeyser <justin.dekey...@gmail.com> Enviado: jueves, 25 de noviembre de 2021 9:27 Para: Alberto Otero Rodríguez <albest...@hotmail.com> Cc: core-libs-dev@openjdk.java.net <core-libs-dev@openjdk.java.net> Asunto: Re: Adding an @Immutable annotation to Java Hello, Quick question, out of curiosity: how would it behave with respect to inheritance? Can a @Immutable class inherit from an non immutable one? if no: that's a bit annoying, no? (fake immutability) Can @Immutable class be subclassed to a non @Immutable one? if no: that's a bit annoying too, no? (downcasting) Since Object is the super class of everything, it sounds like a problem. What have you thought about to handle this concern? Regards, Justin Dekeyser On Thu, Nov 25, 2021 at 9:08 AM Alberto Otero Rodríguez <albest...@hotmail.com> wrote: > > Hi, I was thinking that it could be interesting adding an @Immutable > annotation to Java. It would be a marker annotation for the compiler (similar > to @FunctionalInterface) in order to throw an error if the annotated > class/record has a component that is not @Immutable. > > This means that all existing immutable objects (like the primitive-wrapping > objects and String) should be annotated with @Immutable and the programmer > could, for example, annotate a new record object with @Immutable only if all > its fields are annotated with @Immutable. > > What do you think? > > Regards, > > Alberto Otero Rodríguez.