[ 
https://issues.apache.org/jira/browse/MAPREDUCE-954?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12753147#action_12753147
 ] 

Doug Cutting commented on MAPREDUCE-954:
----------------------------------------

> to protect users who need to implement custom context objects against changes 
> to the interfaces

I'm confused.

Interfaces differ from abstract classes in two ways:
 # Abstract classes can have (default) method implementations.  This permits 
APIs to evolve without breaking callers or implementors.
 # Multiple interfaces can be inherited.

The primary advantage of interfaces is the second.  But if implementations 
extend a base class this advantage is voided.  What then is the utility of the 
interface?

> The new interface's Context objects should be interfaces
> --------------------------------------------------------
>
>                 Key: MAPREDUCE-954
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-954
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>          Components: client
>            Reporter: Owen O'Malley
>            Assignee: Arun C Murthy
>             Fix For: 0.21.0
>
>         Attachments: MAPREDUCE-954.patch
>
>
> When I was doing HADOOP-1230, I was persuaded to make the Context objects as 
> classes. I think that was a serious mistake. It caused a lot of information 
> leakage into the public classes.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to