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.
Remove the type parameter
T
fromPopup<T> extends Overlay<Popup>
, as it appears to have never been used or set anywhere in the code. (This mainly involves replacing a lot ofnew Popup<>
occurrences, which was done entirely automatically by the IDE.)I guess the original purpose of the type parameter was to allow different kinds of popup, all extending the same class, e.g.
Foo extends Popup<Foo> extends Overlay<Foo>
. However, due to the fluent interface ofOverlay
, this wouldn't be entirely type safe as long asPopup
has a public constructor and standalone instances of it can be created. For example,would typecheck fine but throw a
ClassCastException
at runtime, when it tries to assign the underivedPopup
instance tofoo
. (In more complex cases this could cause heap pollution.)If different popup subclasses are later required, it would probably be better to define an abstract base class but keep all the concrete subclasses non-generic, e.g.
BasePopup<T extends BasePopup<T>> extends Overlay<T>
, similar to theTabbedOverlay
class.