在Netty中,可以通過ChannelHandlerContext對象來傳遞數據給不同的ChannelHandler。在ChannelPipeline中的每一個ChannelHandler都有一個對應的ChannelHandlerContext對象,通過這個對象可以將數據傳遞到下一個ChannelHandler中。
例如,在ChannelHandler中,可以調用ChannelHandlerContext的write方法來將數據寫入到下一個ChannelHandler中:
```java
public class MyHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
// 將數據傳遞到下一個ChannelHandler
ctx.write(msg);
}
}
```
另外,也可以通過ChannelHandlerContext的attr方法來給ChannelHandlerContext對象綁定一些自定義的數據,這樣可以在整個ChannelHandler鏈中共享這些數據:
```java
public class MyHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
// 綁定數據到ChannelHandlerContext對象
ctx.attr(AttributeKey.valueOf("myData")).set("Hello");
// 在其他地方獲取綁定的數據
String myData = ctx.attr(AttributeKey.valueOf("myData")).get();
}
}
```
通過這些方法,可以在Netty中方便地傳遞數據給不同的ChannelHandler。