RFR: 8339603: Seal the class hierarchy of Node, Camera, LightBase, Shape, Shape3D
Andy Goryachev
angorya at openjdk.org
Fri Sep 6 16:05:08 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.
a comment in some internal helper class is not, in my opinion, a normative reference.
I am not against this change in principle - it might be a welcome enhancement, if it were solving a real world problem. I am against this change because it has a risk of existing application failing (compatibility risk).
App developers are a creative bunch, they often do things that the platform developers did not expect.
"should" and "may" are not the same as "must" and "will".
but anyway, my objection is due to possible compatibility risk.
edit: +1 for rtfm :-)
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1556#issuecomment-2334369533
PR Comment: https://git.openjdk.org/jfx/pull/1556#issuecomment-2334372515
More information about the openjfx-dev
mailing list