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]

Reply via email to