2.x: Java 9 compatibility fixes (March 3) #5153
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Java 9 has changed its overload resolution algorithm and things that resolved unambiguously in Java 8 no longer resolve:
With the code above, javac 8, Eclipse and IntelliJ 2017 EAP picks
Flowable.subscribe(FlowableSubscriber<? super T> s)
as expected. However, javac 9 finds it ambiguous withFlowable.subscribe(Subscriber<? super T> s)
despite IntelliJ 2017 EAP not indicating any error and still jumping to the right method via CTRL+Click.The problem may come from the
? extends T
part of the declaration. Having justFlowable<T>
compiles properly with javac9.Luckily, we don't need
? extends T
and this PR changes the internal signatures of the affected components.