[ 
https://issues.apache.org/jira/browse/HADOOP-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12622827#action_12622827
 ] 

Enis Soztutar commented on HADOOP-3944:
---------------------------------------

You are right that it may be confusing to have public classes, that cannot be 
used outside its package. However due to Writable semantics, TupleWritable 
should be public so that other classes can instantiate them using reflection. 

You can use ArrayWritable which is similar. 


> TupleWritable listed as public class but cannot be used without methods 
> private to the package
> ----------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-3944
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3944
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 0.17.1
>            Reporter: Michael Andrews
>            Priority: Minor
>
> Reading the hadoop-core javadocs, it appears as though TupleWritable can be 
> used outside of the
> org.apache.hadoop.mapred.join.* package.  A user can import TupleWritable but 
> cannot use it correctly without the setWritten, and clearWritten methods 
> being public.   It seems as the though the intent was to make TupleWritable 
> hidden from the user as it is dependent on CompositeRecordReader.  As a 
> possible solution, classes within a package can be made invisible to the user 
> by omitting 'public' from the class definition.  In the case of 
> TupleWritable, this removes the javadoc link from other classes in 
> mapred.join and it's not clear if these classes should be hidden from the 
> user.

-- 
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