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