I'm with Jacques on this one. The move from Hadoop 1 to Hadoop 2 was a big
issue.
I would would be in favor of not changing abstract classes to interfaces
unless things are broken.


On Mon, Jul 13, 2015 at 5:26 PM, Daniel Barclay <[email protected]>
wrote:

> Jacques Nadeau wrote:
>
>> ...
>>
>> (As a side commentary, my sense is that people have started moving away
>> from interfaces in java and towards abstract classes since enhancements
>> can
>> be given default implementations rather than breaking downstream projects.
>> We saw this extensively in the move from Hadoop 1 to Hadoop 2.  As such, I
>> think we should be cautious about when and if we use interfaces.)
>>
>
> That can be addressed by declaring methods in an interface and providing a
> corresponding class with the default implementations.  (Client code that
> wants to just keep working can extend the class, but code that wants or
> needs an interface (e.g., dynamic proxy classes) still has one.)
>
> Note that in Java 1.8, interfaces can provide default implementations of
> methods, allowing compatibility while avoiding the limitations of using
> a class.
>
>
> Daniel
> --
> Daniel Barclay
> MapR Technologies
>

Reply via email to