【发布时间】:2016-11-13 04:57:49
【问题描述】:
可能是因为实现Writable 会给我们提供一个可序列化的对象。我知道DataInput 和DataOutput 直接处理字节流,但我认为直接从它们读取值并将其存储在原始类型中并没有什么坏处。
话虽如此,readFields() 和 write() 方法的使用似乎是徒劳的,只能从模块化的角度使用。为实例变量创建DataInput 和DataOutput 类的对象并直接获取输入(使用DataInput 和DataOutput 就像一个Scanner 实用程序类)似乎很简单。就我所见,为它们创建一个接口并实现那些明显的方法(无论是在预定义的盒子类还是我们自己的自定义类中)看起来就像语法糖。
如果有什么可以看的,请帮我看穿。
更新:DataInput 和 DataOutput 类生成序列化对象! :o
【问题讨论】:
-
Writable不会产生可序列化的对象,DataInput或DataOutput也不会。不清楚你在说什么,更不用说你在问什么了。 -
不,
Writable确实如此,在 Hadoop 中,并且通过使用DataOutput接口和DataInput在途中, 用于 Hadoop 的序列化协议。DataInput/Output本身没有任何这种神奇的特性,当然它们都不代表“语法糖”。你的问题很困惑。 -
@EJP 我提到了几个链接。第一个直接提到他们序列化最基本的类型。而如果你想要官网的话,你可以看到他们直接read for write to 字节流。
标签: java hadoop serialization java-io writable