使用getter / setter方法将java对象包装/解包到Writable对象是否是个好主意?

时间:2016-07-06 18:38:50

标签: java hadoop mapreduce

更具体地说,在hadoop MapReduce程序中如果使用自定义类,则该类需要实现Writable接口。并且其所有成员都需要可写,例如。

class WeatherData implements Writable{
     Text stationId;
     LongWritable timestamp;
     IntWritable temperature;

}

但是因为Text,LongWritable,IntWritable等类是原始数据类型的Writable包装类。你不能像算术运算或字符串操作那样对它们进行常规操作。

使用getter setter方法,如

 public String getStationId(){
     return this.stationId.toString();
 }

 public void setStationId(String stationID){
     this.stationId = new Text(stationID);
 }

将是有益的,因为外部世界可以将这些成员视为常规java类,但在内部它们将被存储为可写类的对象。

我的问题是它是否是良好的编码实践。使用这种getter / setter方法有什么潜在的陷阱?

1 个答案:

答案 0 :(得分:0)

这对我来说似乎不是一个好习惯。看看Writable Interface Documentation。您真正需要做的就是实现readFields()write()方法。 (您的班级成员不需要自己写作 - 请参阅文档中的示例。)