On Sun, 16 Apr 2023 04:13:22 GMT, Michael Strauß <mstra...@openjdk.org> wrote:

>> John Hendrikx has updated the pull request incrementally with two additional 
>> commits since the last revision:
>> 
>>  - Improve generics on ObservableValueBase
>>  - Improve generics
>
> modules/javafx.base/src/main/java/javafx/beans/property/ObjectPropertyBase.java
>  line 91:
> 
>> 89:     @Override
>> 90:     public void addListener(InvalidationListener listener) {
>> 91:         LISTENER_MANAGER.addListener((ObjectPropertyBase<Object>) this, 
>> listener);
> 
> I think the unchecked casts here can be removed if `ListenerManagerBase` is 
> declared as `ListenerManagerBase<T, I extends ObservableValue<? extends T>>`, 
> and `OldValueCachingListenerManager` accordingly. Then the `LISTENER_MANAGER` 
> instance can be parameterized as `OldValueCachingListenerManager<Object, 
> ObjectPropertyBase<?>>`.

Thanks, I gave up on that one a bit, I was looking for a better solution, but 
never got the generics quite the way I wanted them there, but your change 
works. I was primarily aiming to keep the casts as much out of the inner loops 
as possible.

 I still need to do one cast at this line, but it is a huge improvement:

    @Override
    public void addListener(ChangeListener<? super T> listener) {
        LISTENER_MANAGER.addListener(this, (ChangeListener<Object>) listener);
    }

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1081#discussion_r1167753159

Reply via email to