Hello everybody, Right now it is hard to extend the FilteredList and the SortedList as these classes are marked final. This makes it practically impossible to add convenient helper methods, or change or extend the behavior of these classes. I agree that normally you don't need to extend them, but I also don't see any reason why you shouldn't be allowed to do so.
Usually, you could use composition over inheritance if a class is marked final but you still want to extend it. However, some of the controls expect really a SortedList , e.g. https://github.com/openjdk/jfx/blob/master/modules/javafx.controls/src/main/ java/javafx/scene/control/TableView.java#L442 So this approach does not work either. The motivation for me comes from some limitations that we encountered while developing EasyBind, a small library to make bindings easier. We provide a few convenient methods that extend the ObservableList, and we want to provide a fluent interface similar to streams, e.g. EasyBind.wrap(standard observable list).filter(predicate).map(mapper). For this to work, the filter method needs to return a FilteredList with the additional map method. The easiest solution would be to derive from FilteredList, and implement the "EasyObservableList" interface that we have. Removing the final keyword is done in the following PR: https://github.com/openjdk/jfx/pull/278 Looking forward to your feedback. Best regards Tobias