可能因为执行Writable
会给我们带来一个可序列化的对象。我知道DataInput
和DataOutput
直接处理字节流,但我认为直接读取它们的值并将其存储在基元类型中也没有什么坏处。为什么在我们可以直接使用DataInput和DataOutput时使用Writable?
也就是说,使用readFields()
和write()
方法似乎是徒劳的,只能用于模块化的角度。为实例变量创建DataInput
和DataOutput
类的对象并直接进行输入(使用DataInput
和DataOutput
就像扫描器实用程序类)似乎很简单。为他们创建一个接口并实现这些显而易见的方法(无论是在预定义的盒子类还是我们自己定制的类中)看起来都像语法糖,就我所见。
帮助我看穿它,如果有什么可见的。
更新:DataInput
和DataOutput
类生成序列化对象! :○
'Writable'不会产生可序列化的对象,也不会产生'DataInput'或'DataOutput'。不清楚你在说什么,更不用说你在问什么。 – EJP
[可写的原因是什么](http://stackoverflow.com/q/17203661/207421)可能存在重复。 – EJP
@EJP他们都是。 [Here](https://acadgild.com/blog/writable-and-writablecomparable-in-hadoop/)和[here](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) 。 而你的第二个评论的问题是谈论别的东西。不要只读标题! –