更具体地说,在 hadoop MapReduce 程序中,如果您使用自定义类,则该类需要实现 Writable 接口(interface)。并且它的所有成员都需要是可写的,例如
class WeatherData implements Writable{
Text stationId;
LongWritable timestamp;
IntWritable temperature;
}
但由于 Text、LongWritable、IntWritable 等类是原始数据类型的可写包装类。您不能对它们进行常规操作,例如算术运算或字符串操作等。
具有 getter setter 方法,例如
public String getStationId(){
return this.stationId.toString();
}
public void setStationId(String stationID){
this.stationId = new Text(stationID);
}
将是有益的,因为外部世界可以将这些成员视为常规 Java 类,但在内部它们将存储为可写类的对象。
我的问题是这是否是良好的编码实践。使用这种 getter/setter 方法有哪些潜在的陷阱?
最佳答案
对我来说,这似乎不是一个好习惯。看看Writable Interface Documentation .您真正需要做的就是实现 readFields()
和 write()
方法。 (您的类(class)成员不需要自己是可写的 - 请参阅文档中的示例。)
关于java - 使用 getter/setter 方法将 java 对象包装/解包为 Writable 对象是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38231421/