msfroh commented on PR #16133: URL: https://github.com/apache/lucene/pull/16133#issuecomment-4615508096
For these cases where we've added a default implementation in an interface / abstract class, I get the impression that we're often doing it to avoid breaking consumers (unless we make the implementation `final` in an abstract class, in which case we're being prescriptive about the implementation). I wonder if there's some value going forward to suggest moving these "convenient"/non-breaking default implementations out of the interfaces on the next major version, forcing everyone to implement them? We can still define a helpful abstract base class with default implementations for use in concrete subclasses (like `BaseDirectory`), but the `Filter*` classes can then delegate the given methods (borrowing that idea from [this issue](https://github.com/apache/lucene/issues/14985#issuecomment-3115980036)). As we've discussed before, finding a perfect solution to the `Filter*` problem is really hard. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
