RFR: 8199318: add idempotent copy operation for Map.Entry

Stuart Marks smarks at openjdk.java.net
Wed Jun 2 17:15:34 UTC 2021


On Wed, 2 Jun 2021 07:35:25 GMT, Rémi Forax <forax at openjdk.org> wrote:

> i wonder if we should not declare SimpleImmutableEntry final, while it's not a backward compatible change,
> it's may be better on the long term because SimpleImmutableEntry is already used as an immutable type,
> so instead of documenting the fact that SimpleImmutableEntry is not declared final thus SimpleImmutableEntry as a type does not guarantte shallow immutability, it may be better to fix the root cause.

A quick search reveals that Guava has a public subclass of SimpleImmutableEntry:

https://guava.dev/releases/30.1.1-jre/api/docs/com/google/common/cache/RemovalNotification.html

There are possibly others. It doesn't seem worth the incompatibility to me, as it would break stuff in order to have only a "cleaner" meaning for "immutable." Also, there are other classes in the JDK that claim they are immutable but which can be subclassed, e.g., BigInteger. I don't see a good way of fixing this.

-------------

PR: https://git.openjdk.java.net/jdk/pull/4295


More information about the core-libs-dev mailing list