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.

Reply via email to