Integrated: 8339603: Seal the class hierarchy of Node, Camera, LightBase, Shape, Shape3D

Michael Strauß mstrauss at openjdk.org
Fri Dec 13 21:25:46 UTC 2024


On Thu, 5 Sep 2024 12:01:23 GMT, Michael Strauß <mstrauss at openjdk.org> wrote:

> None of these classes can be extended by user code, and any attempt to do so will fail at runtime with an exception. For this reason, we can seal the class hierarchy and remove the run-time checks to turn this into a compile-time error instead.
> 
> In some cases, `Node` and `Shape` are extended by JavaFX classes in other modules, preventing those derived classes from being permitted subclasses. A non-exported `AbstractNode` and `AbstractShape` class is provided just for these scenarios. Note that introducing a new superclass is a source- and binary-compatible change (see [JLS ch. 13](https://docs.oracle.com/javase/specs/jls/se22/html/jls-13.html)).
> 
> I'm not sure if this change requires a CSR, as it doesn't change the specification in any meaningful way. There can be no valid JavaFX program that is affected by this change.

This pull request has now been integrated.

Changeset: c5a98395
Author:    Michael Strauß <mstrauss at openjdk.org>
URL:       https://git.openjdk.org/jfx/commit/c5a983952ee62ffa56a55a840b57a357fe204bcc
Stats:     215 lines in 46 files changed: 93 ins; 41 del; 81 mod

8339603: Seal the class hierarchy of Node, Camera, LightBase, Shape, Shape3D

Reviewed-by: angorya, kcr

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

PR: https://git.openjdk.org/jfx/pull/1556


More information about the openjfx-dev mailing list