おそらくWritable
を実装すると、シリアライズ可能なオブジェクトが表示されるためです。 DataInput
とDataOutput
はバイトストリームと直接対話していますが、値を直接読み込んでプリミティブ型に保存することはありません。つまり、readFields()
とwrite()
の方法の使用は無益なように見え、モジュール性の観点からしか使用できませんでした。インスタンス変数のためのDataInput
とDataOutput
クラスのオブジェクトを作成し、直接入力を取る(スキャナユーティリティクラスのようにDataInput
とDataOutput
を使用する)のはかなり簡単です。それらのためのインターフェイスを作成し、これらの明白なメソッド(事前定義されたボックスクラスまたは独自のカスタムクラスにある)を実装することは、私が見る限り、構文的な砂糖のように見えます。DataInputとDataOutputを直接使用できるときに書き込み可能な理由
何かが見えるようになったら見てください。
更新:DataInput
およびDataOutput
クラスはシリアル化されたオブジェクトを生成します。 :O
'Writable'は直列化可能オブジェクトを生成せず、' DataInput'または 'DataOutput'も行いません。あなたが何を求めているのか、あなたが話していることは不明です。 – EJP
[Writableの理由は何ですか?](http://stackoverflow.com/q/17203661/207421)の可能な複製。 – EJP
@EJPすべてがそうです。 [ここ](https://acadgild.com/blog/writable-and-writablecomparable-in-hadoop/)と[ここ](https://www.google.co.in/url?sa=t&rct=j&q= &ESRC = S&ソース=ウェブ&CD = 1&CAD = RJA&UACT = 8&VED = 0ahUKEwiRs4aNkuvNAhUJPxoKHTWgDCEQFggdMAA&URL = HTTPS%3A%2F%2Fhadoop.apache.org%2Fdocs%2Fr2.6.1%2Fapi%2Forg%2Fapache%2Fhadoop%2Fio%2FWritable.html&USG = AFQjCNEz5Mh9TeOMqXd8AX74QxlfFMzCzw&SIG2 = 35nxbPRITVf6lfzivGUSjw) 。 2番目のコメントの質問は、何か他のことについて話しています。タイトルを読むだけではありません! –