On Wed, 17 Dec 2025 15:04:18 GMT, Kevin Rushforth <[email protected]> wrote:
>> When compiling JavaFX with Java 25, a new warning appears. This warning will >> result in a compilation failure because warnings are treated as error >> (`-Werror`). >> >> The following warning appears: >> >> >>> Task :controls:compileJava >> C:..\jfx\modules\javafx.controls\src\main\java\javafx\scene\control\SplitPane.java:320: >> warning: [identity] use of a value-based class with an operation that >> expects reliable identity >> private final WeakHashMap<Integer, Double> dividerCache = new >> WeakHashMap<>(); >> >> ^ >> C:..\jfx\modules\javafx.controls\src\main\java\javafx\scene\control\SplitPane.java:320: >> warning: [identity] use of a value-based class with an operation that >> expects reliable identity >> private final WeakHashMap<Integer, Double> dividerCache = new >> WeakHashMap<>(); >> ^ >> error: warnings found and -Werror specified >> 1 error >> 2 warnings >> >>> Task :controls:compileJava FAILED >> >> >> The warning makes sense: We use a `WeakHashMap` with the `Integer` class. So >> the `Integer` values are saved as `WeakRef` inside the `Map`. This makes no >> sense and is rightfully a warning. > > modules/javafx.controls/src/main/java/javafx/scene/control/SplitPane.java > line 316: > >> 314: >> 315: // Cache the divider positions if the items have not been created. >> 316: private final Map<Integer, Double> dividerCache = new HashMap<>(); > > I don't understand why this would have anything to do with a compiler > warning. Further, this will likely lead to a leak, so I doubt this is what we > want. I recommend using a LinkedHashMap that overrides `removeEldestEntry` for this cache instead. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/2010#discussion_r2628410224
