可能是因为实现Writable
会向我们提供一个可序列化的对象。我知道DataInput
和DataOutput
直接处理字节流,但我认为直接读取它们的值并将其存储在基本类型中也没有坏处。
话虽如此,readFields()
和write()
方法的使用似乎是徒劳的,只能在模块化的角度使用。为实例变量创建DataInput
和DataOutput
类的对象并直接获取输入(使用DataInput
和DataOutput
类似于扫描器实用程序类)似乎非常简单。为我们创建一个接口并实现那些明显的方法(无论是在预定义的盒子类或我们自己的自定义类中),就我所见,看起来像语法糖。
如果有什么东西要看,请帮我看看。
更新:DataInput
和DataOutput
类生成序列化对象! :○
答案 0 :(得分:1)
DataOutput
和DataInput
仅序列化/反序列化最基本的类型,即基本类型,而不是自定义或复杂对象。
这就是为什么通过实现Writable
,反过来它的方法readFields(DataInput in)
和write(DataOutput out)
,我们可以序列化我们自己的类的成员/实例变量并遍历它们的输入或输出。由于Writable是针对特定类编写的,因此它们是紧凑的,小(and not 5-bytes long),因此我们不需要为类类型存储元数据,并且与{相比}允许在分布式网络上轻松进行流式传输,从而提供更高的性能。 {3}}。