可能是因为实现Writable会为我们提供一个可序列化的对象。我知道DataInputDataOutput直接处理字节流,但直接读取它们的值并将其存储在原始类型中也没有害处。

话虽这么说,readFields()write()方法的使用似乎是徒劳的,只能从模块化的 Angular 来看。为实例变量的DataInputDataOutput类创建对象并直接获取输入(使用DataInputDataOutput像Scanner实用程序类一样)看起来非常简单。据我所知,为它们创建一个接口(interface)并实现那些显而易见的方法(无论是在预定义的框类还是在我们自己的自定义类中)都看起来像语法糖。

如果有什么可看的,请帮助我查看。

更新:DataInputDataOutput类产生序列化的对象! :o

最佳答案

DataOutputDataInput仅序列化/反序列化最基本的类型,即基本类型,而不定制或复杂的对象。

这就是为什么通过实现Writable以及反过来的readFields(DataInput in)write(DataOutput out)方法,我们可以序列化我们自己类的成员/实例变量并遍历它们的输入或输出。而且由于Writables是为特定的类编写的,因此它们紧凑,小巧(and not 5-bytes long),因此提供了更高的性能,因为与Java Serializable相比,我们不必为类类型存储metdata,并且可以轻松地在分布式网络上进行流式传输。

09-11 02:03