可能是因为 Writable
会给我们一个可序列化的对象。我知道 DataInput
以及 DataOutput
直接处理字节流,但我认为直接从字节流中读取值并将其存储在基元类型中没有坏处。
也就是说 readFields()
以及 write()
方法似乎是徒劳的,只能从模块化的Angular 来使用。为创建对象 DataInput
以及 DataOutput
类作为示例变量并直接获取输入(使用 DataInput
以及 DataOutput
像一个扫描器实用程序类)似乎很简单。在我看来,为它们创建一个接口并实现那些明显的方法(无论是在预定义的box类中还是在我们自己的自定义类中)就像是语法糖。
如果有什么要看的,请帮我看穿。
更新: DataInput
以及 DataOutput
类生成序列化对象!:o
1条答案
按热度按时间li9yvcax1#
DataOutput
以及DataInput
仅序列化/反序列化最基本的类型,即基元类型,而不是自定义或复杂对象。这就是为什么
Writable
,以及它的方法readFields(DataInput in)
以及write(DataOutput out)
,我们可以序列化我们自己类的成员/示例变量并遍历它们的输入或输出。由于可写文件是为特定的类编写的,它们紧凑、小(而不是5字节长),因此提供了更高的性能,因为我们不必为类类型存储metdata,并且与java可串行化相比,它允许在分布式网络上进行流式传输。