On Sat, 3 Aug 2024 00:14:20 GMT, Michael Strauß <[email protected]> wrote:
>> modules/javafx.graphics/src/main/java/com/sun/javafx/util/Utils.java line
>> 197:
>>
>>> 195: if (secondList.isEmpty()) {
>>> 196: return firstList.isEmpty() ? firstList : secondList;
>>> 197: }
>>
>> This logic looks odd. If the second list is empty, we return the first list
>> **if** it is empty (and so empty is returned), otherwise the second list
>> (which is also empty). So, this is equivalent?
>> Suggestion:
>>
>> if (secondList.isEmpty()) {
>> return List.of(); // suggested here, as the two input lists are
>> not guaranteed to be immutable
>> }
>
> The point of this excercise is to preferrably return existing instances, even
> when they are empty. `Border` and `Background` can contain quite a lot of
> objects, and often only one component is changed in a transition, while all
> of the rest is left unchanged. We want to elide the allocation of new objects
> if possible during transitions, which is why most classes check whether the
> result of an interpolation happens to be the same instance as either the
> start value or the end value.
But you are checking this with `equals` I hope? `List.of()` is a constant, it
doesn't allocate anything.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1522#discussion_r1702670114