- 传递给设置、映射、运行、清理的上下文是否相同 映射器?
- 会不会有不一样的情况?
- 能否将上下文作为设置中的成员字段?
最佳答案
是的,在相同 映射器中,它是setup()
中的同一个上下文 对象。 , map()
和 cleanup()
.
如您所见,这些方法是从 run()
中调用的,该方法如下所示:
public void run(Context context) throws IOException, InterruptedException {
setup(context);
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
}
这应该回答您的第 1 点和第 2 点,对于第 3 点,您可以重写 run 方法以获得更多控制,正如 Javadoc 所建议的那样:
Expert users can override this method for more complete control over the execution of the Mapper.
也许您不需要为上下文保留成员字段,但您当然可以。
此外,虽然对象相同,但它的属性值可以在任何方法中设置或取消设置,使其处于与传递给另一个方法(设置、映射或清理)时不同的状态。
关于java - 传递给 Mapper 函数(setup、map、run、cleanup)的 Context 是否始终相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15935426/