我有一个ChannelOutboundHandlerAdapter
覆盖了方法write
。调用父类write
方法之间有什么区别:
public class MyChannelOutboundHandler extends ChannelOutboundHandlerAdapter {
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
//some code
super.write(ctx, anotherMessage, promise);
}
}
并调用上下文
write
?:public class MyChannelOutboundHandler extends ChannelOutboundHandlerAdapter {
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
//some code
ctx.write(anotherMessage);
}
}
最佳答案
您可以检查ChannelOutboundHandlerAdapter#write
的source code以确定它。它调用传递消息和promise的上下文写入:
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
ctx.write(msg, promise);
}
因此,第一个明显的区别是
promise
没有传递给上下文。从长远来看,差异将是:
调用
super
方法正在装饰write方法。要在标准行为中添加一些其他行为时,应执行此操作。然后,如果以后ChannelOutboundHandlerAdapter
源将更改您的类,则仍将仅在其周围添加功能。直接调用
ChannelHandlerContext
时,将替换原始实现。因此它将完全独立于基类方法的更改。关于java - Netty ChannelOutboundHandlerAdapter写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46773613/